MVVM 19

[Android] Dependency Injection (a.k.a DI) - 3. 기반코드를 Koin으로 리팩토링 해보자!

자, 이전 포스팅에서 작성한 Koin으로 리팩토링 해보자. github.com/InsertKoinIO/koin InsertKoinIO/koin Koin - a pragmatic lightweight dependency injection framework for Kotlin - InsertKoinIO/koin github.com Koin에 대해선 위 사이트를 방문해보는 것을 추천한다. 간략하게 말하면, Kotlin으로만 작성된 DI Framework이다. Dagger에 비해 상대적으로 쉽게 작성이 가능하다. 단점으로는 런타임, 실제 앱이 실행되는 동안에 DI에 문제가 발생했는지 안했는지 알 수 있다. (Dagger는 컴파일 타임에 알 수 있다.) 자, 이제 Koin을 사용해보자. - Dependency 추..

개발/Android 2020.10.24

[Android] Dependency Injection (a.k.a DI) - 2. MVVM으로 기반 코드 작성

자, 우선 기반 코드를 작성하도록 하겠다. MVVM 아키텍처를 활용할 것이며, 구글의 아래 이미지를 참고하자. https://developer.android.com/jetpack/docs/guide?hl=ko 앱 아키텍처 가이드 | Android 개발자 | Android Developers 이 가이드에는 고품질의 강력한 앱을 빌드하기 위한 권장사항 및 권장 아키텍처가 포함되어 있습니다. 이 페이지는 Android 프레임워크 기본을 잘 아는 사용자를 대상으로 합니다. Android 앱을 처 developer.android.com 더 자세한 내용은 위 문서를 보고, 아래부터는 코드를 통해 DI를 확인 할 것이다. - 기반 코드 패키지 구조 패키지 구조는 위와 같다. 여기서 fake는 실제로 데이터를 받아오기..

개발/Android 2020.10.24

[Android] Dependency Injection (a.k.a DI) - 1. 뭔데? 왜 하는데? Dagger? Koin? Hilt?

최근 개발자 채용공고를 보면 자격요건 혹은 우대사항에 DI가 심심치 않게 나타난다. 이말은 곧 DI라는 것이 개발에 있어 꽤 중요한 부분으로 인식되고 있다는 증거다. 나 또한 회사에서의 개발, 사이드 프로젝트에서 DI를 활용하고 있다. 이번 포스팅은 DI가 무엇이고 왜 쓰는지를 예시와 함께 알아 볼 것이다. - DI가 뭐야? DI는 "Dependency Injecton" 의 줄임말이며 "의존성 주입" 이라는 의미로 해석이 된다. 의존성이란 A라는 객체(클래스)가 B라는 객체(클래스)를 사용한다는 의미로 이해하자. 이해를 돕기 위해 아래의 예시를 보자. class SomeDataRepository { private val source: SomeDataSource = SomeDataSource() } cla..

개발/Android 2020.10.24

[Android] MVVM + AAC + Coroutine + Retrofit + Github API 예제

이번 포스팅은 Github API를 활용해서 특정 키워드로 Github의 저장소들을 검색하는 안드로이드 앱을 만들 것이다. 아래 기술들을 사용하는 것을 목표로 한다. 1. MVVM(Model-View-ViewModel) 아키텍처 패턴을 적용 2. AAC(Android Architecture Component)를 활용 3. 비동기 작업을 위하여 Kotlin의 Coroutine활용 4. API를 호출하기 위해 Retrofit 라이브러리 활용 최종 결과물은 아래와 같은 모습이다. 위에서 볼 수 있듯이 화면 및 기능 자체는 간단하다. EditText 하나, 버튼 하나, RecyclerView 하나 끝이다. 추가적으로 각 아이템을 클릭했을 때 해당 저장소의 웹페이지로 이동시키는 정도로 구현한다. 1. 의존성 추가..

개발/Android 2020.07.13

[Android] Kotlin + MVVM + AAC 로 Todo 앱 만들기 - 4

이전 포스팅에서 예고했던 대로 데이터베이스에 Todo 아이템을 삽입할 때 별도의 쓰레드를 생성하여 하던 것을 RxKotlin 으로 변경하고 RecyclerView에 DiffUtil 을 적용 할 것이다. - Denpendency 추가 RxKotlin을 사용하기 위해선 앱 모듈 Gradle에 종속성을 추가 해 주어야 한다. https://github.com/ReactiveX/RxKotlin ReactiveX/RxKotlin RxJava bindings for Kotlin. Contribute to ReactiveX/RxKotlin development by creating an account on GitHub. github.com 위 사이트를 참고하여 종속성을 추가하자. Rx에 대해 이해가 필요하므로 htt..

개발/Android 2020.03.01

[Android] Kotlin + MVVM + AAC 로 Todo 앱 만들기 - 3

이전 포스팅에서 만든 코드를 리팩토링하여 MVVM 패턴을 구현하고 AAC를 적용 해 보자. - Dependency 이 앱에서는 ViewModel, LiveData, Room 를 사용할 것이다. 여기서 LiveDat와 Room은 앱 모듈의 dependencies에 추가 해 주어야 한다. https://developer.android.com/jetpack/androidx/releases/room https://developer.android.com/jetpack/androidx/releases/lifecycle 를 참고하여 아래와 같이 수정한다. Room | Android 개발자 | Android Developers Room 지속성 라이브러리는 SQLite를 완벽히 활용하면서 강력한 데이터베이스 액세스를 지..

개발/Android 2020.02.29

[Android] Kotlin + MVVM + AAC 로 Todo 앱 만들기 - 2

이번 포스팅에서는 이전 포스팅에서 언급했듯이 RecyclerView를 위한 어댑터와 뷰홀더 클래스를 작성하고 임의의 데이터로 리스트를 구현하고 "추가" 버튼으로 데이터를 추가해보도록 하겠다. - 어댑터 클래스 생성 view 폴더 아래에 adapter 폴더를 만들고 그 안에 TodoListAdapter 클래스를 생성한다. 이 어댑터 클래스는 TodoModel의 리스트를 생성자로부터 전달받으며, RecyclerView.Adapter를 상속받고, RecyclerView.ViewHolder를 뷰홀더로 갖는 클래스로 구현한다. 아래 코드를 참고한다. class TodoListAdapter(val todoItems: ArrayList): RecyclerView.Adapter() { override fun getIt..

개발/Android 2020.02.29

[Android] Kotlin + MVVM + AAC 로 Todo 앱 만들기 - 1

이번 포스팅에서는 프로젝트 생성, 패키지 구조 생성, 모델클래스 작성, 레이아웃 구성으로 이루어져 있다. 시작해보자. - 프로젝트 생성 이 부분은 따로 설명이 필요 없다고 생각한다. Empty Activity로 MyTodo 라는 이름의 프로젝트를 생성한다. 패키지명이나 프로젝트의 경로는 개인이 알아서 설정하도록 하고, 언어는 Kotlin으로 한다. Minimum API Level은 사실 샘플 프로젝트라 크게 의미가 없기 때문에 내가 자주 하는 API 21으로 두었다. - 패키지 구조 생성 우리는 MVVM(Model-View-ViewModel) 패턴을 사용 할 것이다. 구분하여 보기 편하게 위와 같이 패키지 구조를 생성하고, View에 해당하는 MainActivity를 view 폴더로 옮긴다. 이 부분은 ..

개발/Android 2020.02.29

[Android] Kotlin + MVVM + AAC 로 Todo 앱 만들기 - 0

예전부터 안드로이드 관련해서 기술 공유 블로그 포스팅을 해 보고 싶었다. 하지만 퇴근하고 오면 피곤하고 주말에는 쉬고 싶은 흔한 직장인의 성질(?) 덕분에 미루고 미룬것이 벌써 1년이 넘게 지난 것 같다. 얼마전엔(이것마저 꽤 된..) TensorFlow, Pandas를 책을 보며 따라하면서 포스팅을 했었는데, 현재 업무와 관계없이 단순히 공부해볼까? 하는 마음이었다면, 안드로이드는 회사에서 업무로 진행하고 있기 때문에 정리도 해 둘겸, 스킬향상을 위해 공부도 할 겸 해서 하고 싶었었다. 이제 더 미루면 안될 것 같다는 느낌도 들고 어쩌다 의지가 생겨서 시작 해 보려 한다. 앞으로 하게 될 포스팅이 나 뿐만 아니라 많은 사람들에게 도움이 되었으면 하는 바램. "Kotlin + MVVM + AAC 로 To..

개발/Android 2020.02.29
반응형