전체 글
-
Andorid RecyclerView 이해하기Programming/Android 2022. 4. 24. 23:58
리스트 구현 중에 데이터가 나오지 않아서 삽질하던 중에, LayoutManager가 빠져있었던 어이없는 실수를 뒤늦게 발견했습니다. LayoutManager가 가로 , 세로, 그리드 형식으로 Recyclerview의 모양을 바꿔준다는 것은 잘 알지만, 어떻게 동작하길래 Recyclerview을 안나오게 하는지. 그 원리를 알아봅니다. Recyclerview는 다음과 같은 구성으로 이뤄집니다 Adapter - 필요한 Data를 가져오고, View 연결하는 역할을 합니다. ViewHolder - 재활용될 View의 구성요소를 갖는 객체입니다. LayoutManager - layout의 배치/구성을 담당합니다. 각 요소들이 어떠한 흐름으로 소통하며 RecyclerView를 동작하게 하는지 살펴보겠습니다. 1...
-
Coroutine 개념 정리Programming/Android 2022. 4. 21. 17:11
Coroutine이란 ? - 비동기적으로 실행되는 코드를 간소화하기 위해 Android에서 사용할 수 있는 동시 실행 설계 패턴 - 기본 스레드를 차단하여 앱이 응답하지 않게 할 수도 있는 장기 실행 작업을 관리하는 데 도움이 된다. - 여러 코드 블록을 동시에 실행할 수 있다는 점에서 스레드의 개념과 비슷하다. 기능 비동기 프로그래밍에 권장되는 솔루션. - 경량 : 실행 중인 스레드를 차단하지 안는 '정지'를 지원하므로, 단일 스레드에서 많은 코루틴을 실행할 수 있다. ( 정지는 많은 동시 작업을 지원하면서도 차단보다 메모리를 절약하게 된다 ) - 메모리 누수 감소 : 구조화된 동시 실행을 사용하여 범위 내에서 작업을 실행한다. - 기본으로 제공되는 취소 지원 : 실행 중인 코루틴 계층 구조를 통해 자..
-
런치박스 개발일지 : jetpack RoomDatabase카테고리 없음 2022. 3. 27. 19:54
RoomDatabase의 등장 배경 RoomDatabase의 장점 SQL 쿼리의 컴파일 시간 확인 반복적이고 오류가 발생하기 쉬운 상용구 코드를 최소화하는 편의 주석 간소화된 데이터베이스 이전 경로 기본 구성요소 Room에는 3가지의 주요 구성요소가 있습니다 1. 데이터베이스 클래스 : 데이터베이스를 보유하고 앱의 영구 데이터와의 기본 연결을 위한 기본 엑세스 포인트 역할을 합니다. 2. 데이터 항목 : 앱 데이터베이스의 테이블을 나타냅니다 3. 데이터 엑세스 객체 ( DAO ) : 앱이 데이터 베이스의 데이터를 쿼리, 업데이트, 삽입, 삭제하는데 사용할 수 있는 메서드를 제공합니다. 싱글톤 디자인 패턴을 따라야한다고 하는데, 싱글톤 디자인 패턴이란? (참고자료) -> 객체의 인스턴스가 오직 1개만 생성..
-
런치박스 개발일지 : 기획 / 기술스택 / 앱 이름 선정Programming/Android 2022. 3. 22. 02:32
언제부터 막내가 점심 메뉴를 정하는 문화가 생겼는지 모르겠다. 분명 시작은 우리 막내 맛있는 거, 먹고 싶은 거 먹으라는 선한 마음의 배려(?)로 시작됐을 텐데 먹고 싶은 걸 얘기해도 이것도 싫고, 저것도 싫고 하는 사람들 때문에 요상하게 변질 된 것 같다. 막내였던 경험을 떠올리며 점심 메뉴 고민의 스트레스를 담은 가벼운 프로젝트를 해보려고 한다. 내가 만든 데이터베이스 바탕으로 메뉴를 골라주는 어플리케이션. 간단한 아이디어인만큼, 실제 서비스를 목적으로 두기보다는 전 회사에서 여러가지 이유로 시도해보지 못했던 기술들을 죄다 적용해보자는 목적이 주가 될 것 같다. 처음부터 큰 규모의 프로젝트로 처음 시도하는 기술들을 도입하려고 하다보면 분명 흐지부지 될 것이 뻔하기 때문에. 1. 기획 크게 세가지로 주..
-
기존 MVC 프로젝트, MVVM 패턴으로 리팩토링 해보기Programming/Android 2022. 3. 22. 01:17
입사하고 처음 맡게 된 안드로이드 업무는 기존 앱에 대한 유지보수 작업이었습니다. 인수인계를 해줄 사람이나 정리된 문서가 없었기에 홀로 전전긍긍하며 프로젝트 코드를 뜯어봤어야 했는데요. 자바 기반의 MVC 프로젝트로 Activity나 Fragment에 대부분의 코드 (a.k.a. 스파게티) 가 담겨있었습니다. 저에게 주어진 업무는 간단한 수정사항이나 당장 문제가 없을 정도의 귀여운 이슈를 해결하는 정도였지만, 그 간단한 걸 해결하기 위해서 꼬리를 물고 쫓아야하는 코드가 너무 많았습니다. 결국 앞으로를 위해서, 나뿐만 아니라 이 프로젝트를 받게 될 또 다른 누군가를 위해서 리팩토링을 해보기로 했습니다. 이 포스팅은 MVVM 패턴 도입을 위해 공부했던 내용을 정리한 글입니다. 일부 잘못되거나 부족한 내용있다..
-
[번역] Retrofit과 Coroutine으로 safeApiCalls 만들기Programming/Android 2022. 1. 20. 20:06
https://dev.to/eagskunst/making-safe-api-calls-with-retrofit-and-coroutines-1121 Making safe API calls with Retrofit and Coroutines After the 2.6.0 release, Retrofit has official support for coroutines. The migration from other adapt... dev.to 이 포스트는 위 아티클(원문)을 번역한 글입니다. 일부 오역이 있을 수 있습니다. 2.6.0 릴리즈 이후, Retrofit은 coroutine을 공식적으로 지원합니다. 다른 어댑터( ex. RxJava)로부터 마이그레이션 하는 것이 쉬워졌습니다. coroutine 적용 전 :..
-
[Android] PhoneNumberFormattingTextWatcher 적용 안되는 이유Programming/Android 2021. 10. 22. 11:03
안드로이드 기본 키보드를 사용하지 않고 별도로 구현한 숫자 패드 UI 로 전화번호를 입력받아야 했다. 버튼을 통해 숫자가 입력되면 자동으로 전화번호 포멧에 맞게 변경해줘야 했는데 Android에서 제공해주는 PhoneNumberFormattingTextWatcher을 적용하기로 했다 fun pressedNumberPad(btnId: Int) { val inputText = edit_phone_num.text val addStr = when (btnId) { R.id.btn_1 -> "1" R.id.btn_2 -> "2" R.id.btn_3 -> "3" R.id.btn_4 -> "4" R.id.btn_5 -> "5" R.id.btn_6 -> "6" R.id.btn_7 -> "7" R.id.btn_8 -> ..
-
ViewModelProvider Error 발생Programming/Android 2020. 9. 13. 01:54
ViewModelProvider에 자꾸 빨간 줄이 뜨는 경우, build.gradle을 확인해보자 Cannot resolve symbol ViewModelProviders on AppCompatActivity Hey I'm trying to get my ViewModel working, but no luck so far. Android Studio shows error Cannot resolve symbol 'ViewModelProviders'. Every other question I found on this topic was correcting e... stackoverflow.com