본문 바로가기

안드로이드

(161)
[Android/Kotlin] Room으로 앱내 데이터 저장하기 Room은 내부 디비 라이브러리로 AAC(Android Architecture Component)중 하나로 많은 분들이 사용하고 있습니다. >> Gradle 설정 (androidX 기준) 최신버전은 공식 문서를 참고해주세요. def room_version = "2.2.5" // room implementation "androidx.room:room-runtime:$room_version" kapt "androidx.room:room-compiler:$room_version" androidTestImplementation "androidx.room:room-testing:$room_version" // optional - RxJava support for Room implementation "android..
[Android/Kotlin] 양방향 데이터 바인딩으로 더 mvvm답게 ! mvvm + livedata + room으로 작업하신다면 양방향 데이터 바인딩 도입을 고려해보시길 추천 드립니다 ! 조금 더 mvvm 답게 코딩할 수 있습니다. (mvvm 도입을 고민하거나 도입 초기이신 분들에게 추천합니다. ) >> 데이터 바인딩 데이터 바인딩은 mvvm을 도입하지 않으신 분들중에도 이미 익숙한 주제입니다. 혹시 모르시는 분들은 아래 포스팅이나 다른 분들이 쓰신걸 참고하세요. [안드로이드/Android] 데이터 바인딩 사용하기[1/2] 안녕하세요 이번 포스팅은 '데이터 바인딩' 입니다. 개발 문서의 내용이 많아 나누어 수록하도록 하겠습니다. 시작하기 앞서 데이터 바인딩을 사용하실려면 AndroidStudio 버전 1.3 이상이 필요하니 superwony.tistory.com >> Mvv..
[코틀린]Kotlin Coroutine 사용하기 안드로이드 프로그래밍에서 비동기 프로그래밍은 서버 통신 및 디비 접근과 같이 많은 부분에서 사용되는데, 그 부분을 조금 더 유연하고 간편하게 사용하도록 도와주는게 코루틴인것 같습니다. 비동시 프로그래밍시 스레드를 신중하게 다뤄야 하는데 스레드 생성 및 해제, Context-Switching시 CPU의 메모리를 소모해 많은 수의 스레드를 갖는데 어려움이 있고, 메인 스레드에서 일정시간 한가지 TASK를 수행하면 ANR에러가 발생하기 때문입니다. 그에반해 코루틴은 스레드가 아닌 서브 루틴을 일시정지(suspend)시키는 방식으로 Context-Switching비용이 발생하지 않아 라이트한 스레드라고도 불립니다. context-swiching : 스레드 실행 혹은 종료시 스레드의 상태를 저장하고 복구하는 프로..
[Android] Notification Group을 이용한 푸시 ui 개선 'Notification Group'은 Android 7.0부터 도입돼 여러개의 노티를 그룹화 해서 보여줄수 있습니다. 예로 카카오톡의 새로운 메세지나 지메일 메일 알림이 Notification Group을 사용해 여러개의 알림들을 한가지 그룹으로 보여주고 아래로 당겼을때 개별 노티 리스트를 보여줍니다. 도입된 당시는 Bundle이라고 불렀지만 최신 문서에서는 Group으로 네이밍이 변경 됐습니다. ※공식문서를 참고 했습니다. >그룹지정 NotificationCompat.Builder를 생성할때 'setGroup(String groupKey)' 옵션으로 속할 그룹 명을 지정합니다. 설정된 키값 별로 묶여서 보여집니다. KEY_WATER_GROUP : 저는 각 식물들의 물주는 노티들을 묶어서 보여주기 위한..
[Android] Coroutine + 위젯 업데이트 하기 현재 서비스중인 앱의 디비(Realm -> Room)를 이관하는 작업을 진행하고 있습니다. 단순 이관뿐만 아니라 코루틴을 사용한 비동기 처리 작업을 추가로 진행하면서 위젯을 업데이트 하는데 있어 겪었던 문제와 해결 방법에대해 공유드리겠습니다. 위젯 관련 다른 포스팅 [안드로이드/Android] 위젯 만들기 AlarmManager를 이용해 위젯을 업데이트 하자! >플로우 내부 디비 데이터 조회 -> 정제된 데이터 기반으로 위젯 뷰 업데이트 플로우 자체는 간단하지만 오래된 코드를 분석해서 리펙토링 하는데 많은 시간이 소요됐고, 코루틴을 도입해 비동기로 데이터를 가져와 위젯을 업데이트 할때 엑티비티와 같은 일반 뷰들은 Main thread에서 업데이트 했을때 적용이 됐지만 위젯은 2가지 상황으로 나뉘어 적절하..
책장 넘기는 UX 구현 현재 개발 중인 '식물일기'는 책과 유사한 UI/UX로 구현했고, 그중에서 식물 등록 화면에 적용된 책장을 넘기는 UX에 대해 포스팅하겠습니다. 앱 디자인의 컨셉과 세부적인 부분을 참고한 사이트 목록입니다. 참고 사이트 Pinterest free vector icons lottiefiles.com/search?q=book&category=animations Pinterest 모바일 관련 ui를 참고 할 수 있는 사이트로 전체적인 컨셉을 잡는데 도움이 되는 사이트입니다. free vector icons 무료 아이콘을 제공하는 싸이트로, 책을 ui로 표현하는데 도움을 받은 사이트 입니다. lottie files Air bnb에서 만든 애니메이션 라이브러리로, 어도비의 after effect에서 만든 json..
Livedata(MVVM) + RxAndroid 사용시 주의 사항 mvvm 패턴으로 간단한 rxAndroid와 함께 사용하여 식물관리 앱을 개발중입니다. mvp를 처음 도입할때도 그랬지만 많은 시행 착오를 겪고 수정하면서 체계를 잡아가고 있습니다. 그러던중 주의해야할 상황이 생겨 공유 및 복기 목적으로 남깁니다. 먼저 rxAndroid를 엑티비티 라이프사이클에 맞춰 메모리 누수를 막기위한 용도로 마이너하게 사용하고 있습니다. 잘못되게 사용하고 있다면 댓글 및 방명록으로 지적해주시면 감사하겠습니다. ※사용중인 라이브러리 - Livedata, viewModel(AAC), rxAndroid, kotlin, koin, room > 앱 설명 + 상황 '식물관리'앱의 메인에는 식물 리스트가 좌측에 위치하고 리스트중 선택한 식물의 정보가 우측에 존재합니다. 그리고 우측화면 하단엔 ..
Firebase 다이나믹 링크로 인앱 설치 유도 이번 포스팅에서는 다이나믹 링크 생성법과 사용법에 대해선 다루지 않고 사용하면서 겪은 문제와 해결 방법에대해 다루니 참고해주시기 바 랍니다. 그리고 더 나은 방법은 댓글이나 방명록을 통해 안내해주세요. 다이나믹 링크뿐만 아니라 Firebase에선 앱 운영시 필요한 다양한 기능들이 많으니 적극 활용하는걸 추천합니다! 구글 콘솔 내부 테스트 활용 본론으로 들어가 앱을 설치하지 않은 유저가 다이나믹 링크를 클릭해서 앱을 스토어에서 다운 받고, 열기 버튼으로 앱을 열었을때 특정 화면으로 이동하도록 출시했지만 작동하지 않았습니다. 테스트를 해야했지만 출시를 해야지만 가능하다고 생각해 하지 못했습니다. 근데 구글 콘솔에 '내부 테스트'란 기능이 통해 테스트 유저들을 선정하면 스토어에 접근했을때 상용 apk가 아닌 ..