프로젝트를 진행하며 Compose로 개발할 때 주의할 점에 대해 정리해보자 Dialog와 같은 객체를 선언할 때는 remember로 감쌀 수 있는지 고려해보자 두 방식을 비교했을 때 첫번째 방식은 재구성될 때마다 새로 객체가 생성될 수 있으므로 remember를 사

블루투스를 통해 외부 기기로부터 가속도 센서, 지자기 센서, 자이로 센서 데이터를 넘겨받고 있는데 이 데이터들을 따로 파일에 저장할 수 있겠냐는 요청이 들어왔다찾아보니, 내외부 저장소에 저장할 수 있는 방법이 둘 다 존재했고 나는 내부 저장소에 txt파일 형태로 데이터
안드로이드 앱에서 외부 기기와 블루투스를 통해 통신을 하고 있다. 요구사항에 따르면 홈 버튼을 눌러서 앱을 나가더라도 블루투스 기기로부터 데이터를 받아올 수 있어야 한다. 또 다른 요구사항으로는 화면 전환을 하더라도 기존에 수행하고 있던 블루투스 통신이 끊어지면 안되고
앱 내에서 userId, userIdx 값을 활용하여 통신하는 경우가 많아서 dataStore에 값을 저장하고 있다. 해당 값들을 사용하는 페이지의 경우에는 ViewModel의 init 블록에서 dataStore에 저장되어 있는 값들을 꺼내오고 서버 통신에 활용하려고 했는데 init 블록보다 LaunchedEffect의 호출이 더 빨라서 의도한 대로 동작하...
클린 아키텍처, 멀티 모듈에 대해 공부해보면 Mapper라는 요소가 사용된다는 것을 알 수 있다. 그런데 Mapper의 사용 방법에 대해 알아 보면 한가지 의문이 드는 점이 있다. 위 코드처럼 매핑하는 두개의 data class가 완전히 동일한 멤버 변수를 가지고 있다
블루투스 기기로부터 전달받은 센서 데이터를 회사 내부 알고리즘을 활용하여 분석해야 하는데 이를 aar 파일로 전달해주셨다. 지금까지 이런식으로 라이브러리를 추가해본 적이 없었고 구글에 검색해본 결과, 단일 모듈에서 적용하는 방법에 대한 글은 많았지만 멀티 모듈에 적용하
구현해야 하는 기능 유저가 이미지를 선택하면 해당 이미지에서 어느 부분이 잘릴 예정인지 미리보기 제공 미리보기에서 유저는 확대, 축소, 이동을 통해 잘리는 영역을 조절할 수 있음 코드 CropOverlay 화면에서는 실제 이미지가 잘려서 활용되는 부분 외에는 흐리게

앱 내에서 유저가 언어 설정을 할 수 있도록 다국어 기능을 구현해보자! 기본 언어 설정을 한국어로 하고 유저는 영어, 한국어 중 자유롭게 언어를 변경할 수 있음 Language Enum class 구현 설정 언어를 enum으로 관리하여 실수를 방지해보자. DataS
FCM(푸시알림), GA(유저 동작 데이터)는 모두 파이어베이스 콘솔을 통해 관리할 수 있다.매번 어떻게 발급받는지 기억이 안 나서 구글에 검색하는 게 시간이 너무 아깝다.안드로이드 스튜디오 터미널에서 다음 코드를 입력하면 디버그 sha-1를 확인할 수 있다.출력된 값

앱을 오랜 시간 백그라운드 상태로 두고 포그라운드로 전환하면 종종 데이터 조회가 수행되지 않는 상황이 발생함. 토큰 갱신을 처리하는 과정에서 문제가 발생한 것으로 판단해, 백그라운드 -> 포그라운드 전환 시 자동으로 토큰을 갱신하도록 결정ProcessLifecycleO

현재 운영하고 있는 앱의 사용성을 개선하기 위해 렌더링 최적화 작업을 수행해 보았다.Jetpack Compose는 선언형 UI 방식이기 때문에 컴포넌트 간의 부모-자식 관계와 상태 변수 설계를 명확히 해야한다. 잘못된 설계는 무분별한 리렌더링을 발생시켜, 앱의 성능에

현재 운영 중인 앱을 개선하는 과정에서 Composable 구조가 점점 복잡해졌고, 외부로부터 전달받는 Flow의 개수 또한 증가했다.이로 인해 코드의 가독성이 떨어지고 유지보수가 어려워지는 문제가 발생하였다.또한 외부 Flow를 수신하고 처리하는 로직을 컴포저블에서