본문 바로가기

전체 글

(92)
LiveData 를 선언하는 방법 (get Keyword) LiveData 및 MutableLiveData 가 안드로이드 플랫폼에서의 MVVM Architecture 구현에 큰 역할을 해왔다는 사실에는 누구도 부정할 수 없습니다. 구현이 복잡하고 보일러 플레이트 코드가 많은 Observer Pattern 을 대체하여 간편하게 사용할 수 있기 때문입니다. StateFlow 와 SharedFlow 가 추가되면서 그 입지가 많이 줄었지만, 그래도 여전히 수많은 안드로이드 앱에 사용되고 있습니다. 저는 개발 공부를 할 때 다른 개발자들의 코드를 많이 참고하는 편입니다. 그 개발자들을 선택하는 기준은 두 가지인데, - 유명한 개발자 - 좋은 품질의 코드를 개발할 수 있는 환경에 있는 개발자 가 그 것입니다. 그러한 개발자들의 여러 코드를 쭉 살펴보면, 보통 소속 집단이나..
[XML] Expandable Layout 라이브러리 없이 구현하기. Intro 야심차게 준비한 앱을 마켓에 출시한지 며칠 뒤, 서버 비용 및 API 서버 이슈로 인해 서버가 내려가는 이슈를 겪었습니다. 그다지 크리티컬한 이슈는 아니었지만, 백엔드 담당자분께서 내리신 결론이었기에 그저 따르기로 했습니다. 백엔드 담당자분의 요청으로 굉장히 짧은 시간 안에 앱을 구현, 출시했습니다. 그 과정에서 발생한 기술 부채 및 각종 하드코딩된 부분들을 해결하고 싶었으나, 애초에 서버가 내려가서 의미 없는 작업이 되고 말았습니다. 디자인을 담당해주셨던 분과 긴 시간 대화를 나눴고, 끝내 저희가 내린 결론은 '백엔드를 배제하고 앱을 새로 만들어서 재출시하자' 였습니다. 주 3회에 이르는 잦은 회의와 빠듯한 일정으로 인해 디자인이나 앱이나 모두 각 담당자의 마음에 쏙 들지는 않았던 것 같습니..
자주 쓰는 Intent Flag Intent Flag 4대 컴포넌트 (Activity, Service, Broadcast, ContentResolver) 간 통신을 하려면 Intent 를 사용하여야 합니다. 안드로이드 앱 개발시 가장 빈번히 사용되는 경우는 단연 Activity 간 이동입니다. 이 Activity 들은 Task 라는 Stack 에 적재되며, 기기의 백 버튼을 누르면 pop() 됩니다. 즉, 화면에 보이는 Activity 는 삭제되고, 직전의 요소가 화면에 나타납니다 Task 에 적재되는 Activities 를 관리하는 것 역시 개발자의 몫이며(물론 시간이 오래 지나도록 사용하지 않는 Activity 는 OS 차원에서 제거해주기도 합니다.) 관리를 해야하는 이유는 당연히 Memory leak 에 대한 위험입니다. 개발을 ..
코틀린의 5가지 범위 지정 함수 예 (Scope function) 코틀린을 처음 접했을 때, 정확한 가이드라인이나 기준이 없어서 당황스러웠던 것이 바로 범위 지정 함수였습니다. 아마 자바에서 코틀린으로 넘어오신 수많은 안드로이드 개발자분들이 그러셨으리라 추측합니다. 저 또한 여전히 그러므로, 직접 몇 가지 스니펫을 기록해두려 합니다. run 1. BufferedReader 등으로 유저의 입력을 받는 경우 (보통 PS) 전역 변수에 값을 재할당하고자 할 때 사용합니다. bufferedReader.readLine().split(" ").map { it.toInt() }.run { n = this[0] m = this[1] } /* 물론 다음과 같이 할 수 있겠지만, 코드가 지저분해져 저는 선호하지 않습니다. */ val (a, b) = bufferedReader.readL..