Android개발 13

안드로이드 개발 (33) Coroutine Flow on Android

안녕하세요 Loner 입니다. 스터디에서 발표를 했던 Android 에서의 Coroutine Flow 활용을 블로그에 다시 정리합니다. 입문용에 가까운 내용이기 때문에 설명이 축약된 부분이 많을 수 있습니다. 판초라는 청년이 산에 살고 있었습니다. 판초는 물을 길러오기 위해서 호수에 가야합니다. 하지만 호수를 찾아갔더니 호수의 물이 말라있었습니다. 직접 호수를 찾아가지 않고 물을 길러오는 동시에 물이 말랐는지 확인할 방법을 찾던 판초는 호수와 연결된 기나긴 통로를 만들면 어떨까 생각을 하게 됩니다. 결국 판초는 집에서 호수까지 연결되는 기나긴 파이프를 설치합니다. 그렇게 직접 호수에 찾아갈 일은 사라졌습니다. 호수에 물이 말라 있다면 파이프에 물이 흐르지 않을 것이고 호수에 물이 남아있다면 파이프에 물이..

안드로이드 개발 시 실수 모음

안녕하세요 Loner 입니다. 언제나 열심히 앱 개발 작업중 입니다. 정신 차려보니 벌써, 추석 명절을 맞았고 앱개발 때문에 시간이 항상 바빳지만 오랜만에 여유가 생겨서 블로그를 작성합니다. 명절 이벤트로 안드로이드 개발하면서 한번쯤 경험 할 수 있는 실수들을 모아봤습니다. 제 경험과 함께, 다른 안드로이드 개발자님들의 의견을 모아서 만들어봤습니다. 0. Manifest.xml - 필요한 permission을 추가 안함 - Activity의 export를 추가안함 - useClearTextTraffic 설정을 하지 않아서 삽질 - Service나 receiver 클래스를 만들어두고 manifest 에 설정 안함 1. RecyclerView 사용시 - 어댑터, xml , 로직 다 멋지게 만들었으나 layo..

안드로이드 개발 (32) LiveData와 MutableLiveData

LiveData는 이미 내부적으로 setValue와 postValue가 존재하지만 이를 외부로 공개하지 않고 상속을 받은 서브클래스를 통해 외부로 공개합니다. 그렇기 때문에 이미 안드로이드에서 지원하는 LiveData는 MutableLive라는 서브클래스를 만들어두고 MutableLive에서 set을 허용하도록 개발자에게 환경을 제공합니다. 그렇게 View는 LiveData 에서 읽기만 할 수있고, ViewModel 에서 MutableLiveData를 통해 변경할 수 있는 권한이 생깁니다. 불변과 가변의 차이를 가진 LiveData와 MutableLiveData에 대해 각각 정리해봤습니다. 1.MutableLiveData package androidx.lifecycle; /** * {@link LiveD..

안드로이드 개발 (27) paging 처리에 안드로이드 권장 architecture 적용하기

안녕하세요 Loner 입니다. 페이징 처리에 관한 이전 포스팅과 이어지는 내용입니다. 이전 포스팅에서 했던 작업은 다음과 같습니다. 0. 정리 주제 검색창에 검색어 입력시 검색 Api를 이용해서 네트워크에서 데이터를 20개씩 받아오면 화면에 렌더링하는 페이징 처리 - 검색어를 변경했을 때 기존 데이터는 리셋하고 1페이지의 데이터 갯수 20개를 가져옴 - 스크롤을 데이터 끝까지 터치 했을 때 다음 페이지의 데이터 갯수 20개를 추가로 불러와서 현재 데이터와 합침 - 검색창에서 타이핑할때 이전에 검색했던 기록들을 보여줌 - 이전 포스팅 작업 순서- 1. paging 처리에 필요한 핵심 로직 구상 https://gift123.tistory.com/52 안드로이드 개발 (23) - 페이징 처리 로직 안녕하세요 ..

안드로이드 개발 (25) - Coroutine Job 사용과 AutoCompleteTextView를 사용한 검색 기록 보기

https://gift123.tistory.com/52?category=967702 안드로이드 개발 (23) - 페이징 처리 로직 안녕하세요 Loner입니다. 오랜만에 글을 작성하게 됩니다. 최근에 많은 사건이 있었고, 수습하느라 정신이 없었네요 이포스팅은 최근에 겪은 문제를 참고해서 정리하는 글입니다. 페이징 처리를 gift123.tistory.com https://gift123.tistory.com/53?category=967702 안드로이드 개발 (24) - 페이징 처리 실제 구현 https://gift123.tistory.com/52 안드로이드 개발 (23) - 페이징 처리 1편 안녕하세요 Loner입니다. 오랜만에 글을 작성하게 됩니다. 최근에 많은 사건이 있었고, 수습하느라 정신이 없었네요 이..

안드로이드 개발 (23) - 페이징 처리 로직

안녕하세요 Loner입니다. 오랜만에 글을 작성하게 됩니다. 최근에 많은 사건이 있었고, 수습하느라 정신이 없었네요 이포스팅은 최근에 겪은 문제를 참고해서 정리하는 글입니다. 페이징 처리를 해야되는 상황이 있었는데 페이징 처리를 어떻게 해야할지 살펴보도록 하겠습니다. 0. 페이징 처리를 왜 하는가? 페이징 처리의 경우 기본적으로 한꺼번에 많은 네트워크 호출을 피하기 위해서 사용합니다. 예를들어 리스트를 보여준다고 할때 사용자가 스크롤 하기전 최대로 볼 수 있는 아이템 갯수가 15개이지만 서버에 있는 전체 데이터량이 1만개라 했을때 이를 한꺼번에 다 클라이언트로 가져와서 데이터를 사용한다해도 사용자가 다 볼일이 없을수도 있고, 기본적으로 많은양을 가져오는것에 있어서 서버에 많은 과부하가 생깁니다. 그래서 ..

안드로이드 개발 (22) ScrollView 문제, RecyclerView의 item의 일부 뷰만 업데이트

안녕하세요 안드로이드 개발자 Loner입니다. 주말을 맞아 사이드 프로젝트를 진행하고 있어서 오늘도 건드려본 관련 내용을 정리할겸 포스팅을 합니다. 따로 공부해서 올리는 대단한 내용은 없지만 단편적인 내용 정리가 우연히 블로그를 보게되는 사람들에게 이슈해결의 힌트로 도움이 됬으면 좋겠습니다. 1. ScrollView 안에서 중첩 RecyclerView를 사용하면 끝까지 스크롤 할 수 없다. 오늘 사이드 프로젝트 협업을 하던 도중에 같은 팀원에게 댓글 구현방법에 대해 도움을 주기 위해서 다른 프로젝트를 켰다가 댓글을 여러개 생성해보니 우연히 발견한 이슈 입니다. 처음에는 댓글 db 비즈니스 로직 관련해서 문제가 생긴줄 알았으나 알고보니 안드로이드 UI 프레임워크 일부 문제였습니다. 기본적으로 스크롤 뷰의 ..

안드로이드 개발 (21) 홀수 짝수, Release Key, Diff Utill 등등

안녕하세요 안드로이드 개발자 Loner입니다. 주말이 다가와서 잠시 사이드 프로젝트를 즐기고 있습니다. 사이드 프로젝트를 함께하는 삶은 개발자만이 가질 수 있는 큰 특권이 아닐까 싶네요 오늘도 경험했던 일을 소소하게 정리하는 글을 남기도록 하겠습니다. 1. 프로그래밍에서 홀수 짝수 찾는법 이상형 월드컵과 같이 라운드의 수가 짝수의 경우에만 동작해야하는 경우가 있습니다. 이 경우 간단하게 조건문으로 2의 나머지를 구하면 됩니다. 0이면 짝수이고 , 1이면 홀수 입니다. 예제 if (userMissions.size() % 2 == 1) { userMissions.remove(userMissions.size() - 1); } - %2 == 1은 홀수인지 체크합니다. - 반대로 %2 == 0 은 짝수인지 체크합..

안드로이드 개발 (16) Compose Lists

안녕하세요 안드로이드 개발자 Loner입니다. Compose의 정리를 이어서 진행해보도록 하겠습니다. List 기존 Xml방식으로 List는 주로 리싸이클러 뷰 혹은 리스트뷰로 많이 구현을 해왔습니다. Compose에서는 List를 어떻게 구현해야할지 살펴보겠습니다. 심플 구현 @Composable fun MessageList(messages: List) { Column { messages.forEach { message -> MessageRow(message) } } } Column 또는 Row를 사용하여 위과 같이 각 아이템의 콘텐츠를 표시할 수 있음 verticalScroll() Modifier를 사용하여 Column을 스크롤 가능하게 만들 수 있습니다. 하지만 아이템 갯수만큼 UI가 미리 만들어져..

안드로이드 개발 (15) Theming in Compose

오늘도 Compose 내용 정리를 이어서 해보겠습니다. Compose의 테마 설정 - Compose는 테마를 적용하여 앱에 일관된 디자인과 분위기를 쉽게 제공을 함 - 기본적으로 Compose의 머티리얼 디자인 구현을 만드려는 앱에 맞게 맞춤설정이 가능 - 머티리얼 디자인 뿐만 아니라 다른 Compose의 공개 API를 사용하여 맞춤 디자인 시스템을 만들 수 있음 애플리케이션 전체 테마 설정 MaterialTheme( colors = …, typography = …, shapes = … ) { // app content } 머티리얼 디자인 구성요소(버튼, 카드, 스위치 등)는 나만의 앱을 효과적으로 반영하기 위해 머티리얼 디자인을 맞춤설정하는 체계적인 방법인 머티리얼 테마 설정을 기반으로 빌드됩니다. -..