일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
- 최단경로
- 기술면접
- 다익스트라
- Controller
- Django
- 우선순위큐
- 거쳐가는 정점
- spring boot
- onclick
- clean code
- 음수가 포함된 최단경로
- Android Studio
- Python
- 동적계획법
- 벨만 포드 알고리즘
- disjoint set
- kmeans
- compiler
- 유니온 파인드
- Java
- bottom-up
- dto
- 코딩테스트
- BufferedReader
- union-find
- 플로이드 와샬
- 엔테크서비스
- scikit-learn
- top-down
- 직무면접
- Today
- Total
목록Android (26)
춤추는 개발자
이번 포스팅부터는 구글에서 권장하는 Room과 MVVM을 활용하도록 하겠습니다. 위 이미지는 실제 구글에서 권장하는 Android MVVM 패턴의 데이터 통신 모델입니다. 최근 개인 프로젝트로 앱을 개발하고 유지보수하는 과정에서 몇가지 불편함을 겪었습니다. SQLite 기반에서는 테이블의 컬럼 하나를 변경하는데만 3~4개의 수정 사항이 필요. AddEditActivity의 복잡한 코드, MVVM을 안쓰니 직접 처리해야할 로직들이 많음. (ex: List 갱신) 구글에서 비동기처리로 권장하는 RxJava가 MVVM과 호환가능. (AsyncTask는 Android 11부터 Deprecated로 지정) 이러한 상황들을 해결하기 위해 Room과 MVVM을 사용하기로 결심했습니다. 먼저, 예제 하나를 따라해보고 ..
Android에서 ROOM이란 무엇일까? ROOM은 데이터베이스의 데이터를 Java 또는 Kotlin 객체로 매핑해주는 ORM 라이브러리입니다. ORM(Object Relational Mapping)이란? 객체 지향 프로그래밍은 Class를 사용하고, 관계형 데이터베이스는 Table을 사용한다. 객체 모델과 관계형 모델 간에 불일치가 존재한다. ORM은 객체간의 관계를 바탕으로 SQL을 자동으로 생성하여 불일치를 해결한다. ROOM은 SQLite에 대한 추상 레이어를 제공하여 SQLite의 모든 기능을 제공하면서 편리한 데이터베이스의 접근을 허용합니다. Google은 SQLite대신 ROOM을 사용하도록 권고하고 있습니다. SQLite vs ROOM SQLite는 쿼리에 대한 에러를 컴파일 타임에 확인할..
RecyclerView란? 대량의 데이터set을 효율적으로 표시할 수 있는 View입니다. 예를 들어 카카오톡의 채팅 대화방처럼 특정 객체들을 리스트 형태로 나열하는데 RecyclerView를 활용할 수 있습니다. 기본적으로 제공되는 ListView가 있지만, RecyclerView는 커스터마이징과 효율성 측면에서 장점이 더 많은 View라고 볼 수 있습니다. RecyclerView의 재활용성 위의 그림을 보면, ListView와 다르게 RecylcerView는 아래로 스크롤 할 때, 맨 위의 객체를 맨 아래로 이동시켜 재활용하는 것을 확인할 수 있습니다. 물론, 객체 자체만을 재활용하는 것으로 객체에 담겨지는 데이터는 새로 갱신하여 사용합니다. 만약 맨 처음 화면에 보여질 View가 10개라면? 실제 ..
1. onAttach() - Fragment가 Activity에 붙을 때 호출. - 아직 fragment가 완벽하게 생성된 것은 아님. 2. onCreate() - 본격적으로 Fragment가 Activity에 호출을 받아 생성되는 시점. - 해당 메소드에서는 UI관련 작업을 할 수 없다. 3. onCreateView() - Fragment에 속한 각종 view나 viewGroup에 대한 UI바인딩 작업. - Layout을 inflate하여 view를 작업한다. 4. onActivityCreated() - Activity에서 Fragment를 모두 생성하고 난 후, 호출. - Activity에서 onCreate() 다음에 호출된다. - 여기서 Activity와 Fragment가 연결되는 시점이다. 5. ..
이전 포스팅의 MVC에 이어서 MVP 패턴에 대해 알아보겠습니다. MVP란? Model, View, Presenter로 구성된 디자인 패턴입니다. MVP의 핵심 설계는 MVC와 다르게 UI(View)와 로직(Model)을 분리하고, 서로 간에 상호작용을 다른 객체(Presenter)에 그 역할을 줌으로써, 서로의 영향(의존성)을 최소화하는 것에 있습니다. 각 객체들의 특징은 아래와 같습니다. Model - 프로그램 내부적으로 쓰이는 데이터를 저장하고, 처리하는 역할(비즈니스 로직). - View 또는 Presenter 등 다른 어떤 요소에도 의존적이지 않은 독립적인 영역. View - UI를 담당하며 안드로이드에서는 Activity, Fragment가 대표적인 예. - Model에서 처리된 데이터를 Pr..
위키피디아에서는 디자인 패턴을 아래와 같이 정의하고 있습니다. 소프트웨어 개발 방법에서 사용되는 디자인 패턴은, 프로그램 개발에서 자주 나타나는 과제를 해결하기 위한 방법 중 하나로, 과거의 소프트웨어 개발 과정에서 발견된 설계의 노하우를 축적하여 이름을 붙여, 이후에 재이용하기 좋은 형태로 특정의 규약을 묶어서 정리한 것이다. 알고리즘과 같이 프로그램 코드로 바로 변환될 수 있는 형태는 아니지만, 특정한 상황에서 구조적인 문제를 해결하는 방식을 설명해 준다. 이러한 디자인 패턴은 코드의 가독성과 테스트 및 유지보수를 간편하게 만들어 줍니다. 만약 반대로 디자인 패턴을 적용하지 않는다면? 무작정 하나의 Class에 온갖 코드를 작성하면서 코드 중복이나 for문, if문들을 남발하게 되고, 제품의 유지보수..
Activity는 메모리에 상주되면서 소멸되기까지 생명 주기(Life Cycle)를 가지고 있습니다. 이에 따라 콜백 메서드가 호출되는데, Activity를 구현할 시에 반드시 알아야하는 내용입니다. 위 이미지는 구글 안드로이드 레퍼런스 API 가이드에 나오는 Activity의 생명 주기입니다. 다음으로 각 메서드에 관한 간략한 표를 가져왔습니다. 메소드 설명 다음 메소드 onCreate() 액티비티가 생성될 때 호출되며 사용자 인터페이스 초기화에 사용됨. onStart() onRestart() 액티비티가 멈췄다가 다시 시작되기 바로 전에 호출됨. onStart() onResume() 액티비티가 사용자와 상호작용하기 바로 전에 호출됨. onPause() onPause() 다른 액티비티가 보여질 때 호출됨..