Android

    [JETPACK개론] WorkManager(3) + Chaining, Coroutine

    [JETPACK개론] WorkManager(3) + Chaining, Coroutine

    WorkManager Chaining WorkManager의 첫 글에서 작업순서를 정해주기도 한다고 하였다. 예를 들어 작업 A, B, C가 있다고 가정해보자. A, B 는 순서 상관 없이 실행되도 괜찮지만 C는 무조건 A / B가 모두 실행된 뒤에 실행되어야 한다고 한다면 작업순서를 정해줄 수 있어야 한다. 다음과 같은 WorkManager를 B, C까지 만들어주자. class WorkManagerA(context : Context, workerParameters: WorkerParameters) : Worker(context, workerParameters) { override fun doWork(): Result { for(i in 0..3){ sleep(1000) Log.d("WorkManager..

    [JETPACK개론] WorkManager(1)

    [JETPACK개론] WorkManager(1)

    WorkManager는 공식문서를 확인해보면 지속적인 작업에 권장되는 솔루션이라고 나온다. 앱이 다시 시작되거나 시스템이 재부팅될 때 작업이 예약된 채로 남아 있으면 그 작업은 유지된다고 설명하고 있다. 이렇게 공식문서만 살펴보면 이해가 잘 안되는 경우가 있다. 사용자가 앱을 나가도 오래 걸리는 작업같은 경우에는 앱을 나가버리면 보통 그 작업이 멈춰버린다. 이 때 WorkManager를 사용할 수 있다. 이렇기 때문에 지속적인 작업에 권장되는 솔루션이라고 하는 것이다. 또한 WorkManager는 코루틴을 지원하고, 작업 순서 설정이 가능하다. 예를 들어 A, B작업은 첫 번째로 실행되는 두 번째로 실행되는 상관이 없지만 C라는 작업은 꼭 세 번째에 실행되어야 한다고 가정하였을 때 이 때 작업 순서를 정..

    [JETPACK개론] ROOM(3)

    [JETPACK개론] ROOM(3)

    ROOM드디어 마지막 포스팅!! 이제 전 글에 이어서 LiveData와 RecyclerView, 그리고 Repository이용해서 불러오는 것까지 구현해보자! 먼저 레이아웃에 리사이클러뷰, item 그리고 어댑터클래스부터 먼저 생성해주자. class CustomAdapter(private val dataSet : List) : RecyclerView.Adapter() { class ViewHolder(view : View) : RecyclerView.ViewHolder(view){ val textView : TextView = view.findViewById(R.id.textView) } override fun onCreateViewHolder(parent: ViewGroup, viewType: Int)..

    [JETPACK개론] ROOM(2)

    이 글은 전에 포스팅했던 ROOM(1)에 이어서 공부한 내용을 정리해보겠다! 저번 코드에 이어서 Multi Table, 테이블을 하나 추가하고, 이를 ViewModel로 분리하여 왜 viewModelScope에서 Disaptchers.IO를 사용하는지까지 알아보자. text_table만 있던 데이터베이스에 word_table이라는 테이블을 추가해보자. @Entity(tableName = "word_table") data class WordEntity ( @PrimaryKey(autoGenerate = true) @ColumnInfo(name = "id") var id : Int, @ColumnInfo(name = "text") var text : String ) 테이블을 만들어 주었으니 Dao에 똑같이 ..

    [JETPACK개론] ROOM(1)

    [JETPACK개론] ROOM(1)

    전에 포스팅했던 글에서 SQLite에 대해서 다뤄보았다. SQLite 게시물 바로가기 -> [JETPACK개론] SQLite(1) 앱을 이용하다보면 네트워크가 끊겼을 때 네트워크 오류입니다. 다시 시도해 주세요 라는 메세지를 본 적이 있다. 하지만 카카오톡 채팅방처럼 네트워크가 연결되어 있지 않은 상황에서도 잘 ssongcode.tistory.com Room은 SQLite를 완벽히 활용하면서 원활한 데이터베이스 엑세스가 가능하도록 하는 업그레이드 버전이라 할 수 있다. 여러 장점이 있지만 반복적이고 오류가 발생하기 쉬운 상용구 코드를 최소화하는 것이 Room의 장점이다. 이러한 이유로 JetPack 라이브러리에 포함된 Room의 사용을 권장하고 있다! Room 구성요소 데이터베이스 - 데이터베이스는 앱..