본문 바로가기
반응형

개발53

[Android] Architecture 정리 – AAC ViewModel, LiveData, Coroutine 본 포스팅은 Android 앱 개발 시 적용할 수 있는 여러 아키텍쳐 패턴들 중 Google에서 공식 문서를 통해 Recommend하는 방식을 소개하고자 합니다. 본문은 여기에서 확인하실 수 있으며, 본 포스팅에서는 이를 바탕으로 간단한 샘플 앱을 만들어 보고자 합니다. 크게 다루는 기술 셋은 다음과 같습니다. 기본적인 언어: Kotlin Jetpack – Lifecycles, LiveData, ViewModel 비동기 처리: Coroutine 각각에 대해 언급하기는 하지만, 최소한의 정보만을 공유하며 상세한 내용을 언급하지는 않습니다. (좀더 공부하여 세부적으로 다루도록 하겠습니다.) 각 기술 셋을 간단하게 사용하면서 최대한 아키텍쳐가 전반적으로 어떤 식으로 돌아가는지, 왜 필요하고 어떤 점에서 장점이.. 2020. 11. 8.
[Android] View Binding Android에서는 현재 UI를 그리기 위해 XML을 사용하고 있습니다. (Compose는 논외로 합니다.) XML에 정의한 View widget들을 제어하기 위해서는 Java/Kotlin 코드로 작업을 해야하죠. 코드에서 해당 view들의 reference를 얻기 위해서 일반적으로 아래와 같은 방법을 사용합니다. // Java Button button = (Button) findViewById(R.id.button) // Kotlin val button = findViewById(R.id.button) 하지만 이미 Android 앱 개발을 좀 해보신 분이라면 아시겠지만 위와 같은 방식은 단점이 좀 있죠. 당연하게도 reference 얻어오는 방식이 불편합니다. 1~2개면 모르겠지마, 10개가 넘어가면 .. 2020. 11. 8.
[Android] Handler Memory Leak 개인적으로 비동기 처리는 Rx로 거의 하는 편이지만, 종종 Handler를 쓰는 경우가 있습니다. 그런데 저 같이 기본기가 부족한 개발자의 경우 아래와 같이 메모리 릭이 잠재된 코드를 작성할 수 있습니다. 메모리 릭 가능성이 있는 코드 class LeakActivity : AppCompatActivity() { private val TAG = LeakActivity::class.java.simpleName private val handler: Handler = object : Handler() { override fun handleMessage(msg: Message) { super.handleMessage(msg) Log.d(TAG, "handleMessage") } } override fun onCr.. 2020. 11. 8.
[Android] Dagger – 1. @Inject 이전 포스팅에서 Dependency Injection에 대해 간단히 언급하였습니다. 본 포스팅에서는 Dagger를 사용하여 DI를 하는 간단한 예제를 보여드리고자 합니다. 이전 포스팅에서 사용한 예제 코드를 그대로 가져와봤습니다. class MoviesPresenter( private val moviesRepository: MoviesRepository ): MoviesContract.Presenter { // ... } 직접 DI를 해주게 되면 MoviesPresenter() 생성 시 MoviesRepository()를 직접 생성하여 주입해야 하는데, Dagger를 사용하게 되면 아래와 같이 작성할 수 있습니다. class MoviesPresenter @Inject construct( private v.. 2020. 11. 8.
반응형