본문 바로가기

Android34

Android Room - Coroutines(코루틴)과 같이 쓰는 법 이번 포스팅에서는 지난 번에 설명한 Room과 Coroutine을 함께 사용하는 방법에 대해 알아 본다. Room은 2.1 버전부터 Coroutine을 지원해주고 있다. DAO 메소드를 suspend로 선언하여 사용할 수 있다. build.gradle 파일 수정 Room만 사용한다고 Coroutine 지원을 바로 받을 수 있는 것은 아니다. Room과 Coroutine을 함께 사용하려면 build.gradle 파일에서 Room 버전을 2.1 이상으로 지정하고 Coroutine 지원 dependency도 추가해주어야 한다. 위와 같은 방식으로 build.gradle에 coroutine을 위한 room dependency를 추가해주면 된다. suspend DAO method 선언 DAO 선언시 suspend.. 2020. 6. 6.
Android Room - Entity Annotations Room Entity에 사용할 수 있는 annotation들은 굉장히 많다. 그 중에 사람들이 자주 사용하는 annotation들에 대해서 짧게 정리해보려 한다. Entity 먼저 class를 Room Entity로 선언하기 위해서 기본적으로 Entity Annotation을 지정해줘야 한다. Entity Annotation 안에서 위와 같이 table 이름을 지정해 줄 수 있다. 지정하지 않으면 클래스 이름을 그대로 table 이름으로 사용하게 되는데, 일반적으로는 table 이름을 직접 지정하는 경우가 더 많을 것이다. 이럴 때는 위와 같이 사용하면 된다. PrimaryKey 필드를 DB의 기본 키로 설정할 수 있다. DB가 해당 키를 자동으로 증가시키게 하려면 autoGenerate를 true로 하.. 2020. 6. 4.
Android Room Room이란? Room은 SQLite를 편하게 사용할 수 있도록 하는 wrapper라고 생각하면 된다. Room은 Persistence 라이브러리로, SQLite를 사용하는 추상화 계층을 제공하여 SQLite의 모든 기능을 사용할 수 있는 다양한 DB Access가 가능하도록 해 준다. Room을 사용해야 하는 이유 컴파일 타임 체크를 제공 LiveData를 함께 사용하기에 편리 구현하고 사용하기가 편리 사용시 쓸데 없이 많은 코드 불필요 Room의 기본 컴포넌트 Entity DAO Databse Room의 기본 컴포넌트는 위와 같이 세 가지 요소가 있다. Entity Database에서 사용할 테이블과 매칭되는 Kotlin(또는 Java) 클래스 DAO get, store 등과 같이 Database a.. 2020. 6. 2.
Kotlin - Coroutine 추가 정리 3 [이전 글] 2020/05/27 - [Android/Kotlin] - Kotlin - Coroutine 추가 정리 1 2020/05/29 - [Android/Kotlin] - Kotlin - Coroutine 추가 정리 2 Callback 대신 Coroutine 쓰기 [Callback] Callback을 사용한 간단한 예시이다. Network Request를 하면 fetch를 하고, fetch가 완료되면 callback이 불리는 구조이다. callback은 받은 결과를 화면에 표시해준다. 이렇게 callback을 사용하면 fetch를 부르고 결과를 기다리거나 하지 않고 이와 상관 없이 networkRequest() 함수는 종료되게 된다. networkRequest() 함수 내에서 fetch 결과에 따라 .. 2020. 5. 31.
Kotlin - Coroutine 추가 정리 2 지난 글에 이어서 계속 작성해 본다. 지난 글 : 2020/05/27 - [Android/Kotlin] - Kotlin - Coroutine 추가 정리 1 구조적 동시성 앞선 글의 예시들을 보면, Coroutine도 결국 blocking 하고 coroutine이 끝날 때까지 기다리는 식의 전통적인 패턴인 것처럼 보인다. 자바에서는 일반적으로 쓰레드에 대한 참조를 유지하고 모든 쓰레드에 대해 join()을 호출해서 다른 쓰레드를 기다리는 동안 기본 쓰레드를 차단하는 방식으로 진행했다. Coroutine도 이와 비슷하게 처리를 할 수는 있지만 이렇게 예전과 같이 사용하는 방식을 사용하지는 않는다. Kotlin에서는 Coroutine을 계층 구조로 만들 수 있다. 그러므로 부모 Coroutine이 자식 Cor.. 2020. 5. 29.
Kotlin - Coroutine 추가 정리 1 Coroutine에 대해서 지난 번 포스팅 글보다 조금 더 상세하게 다시 정리해보려고 한다. 사용을 하다 보니 지난 번에 작성했던 것보다 더 디테일한 부분들도 있고 어떻게 동작하는 지도 더 알면 좋을 것 같아서이다. Coroutine에 대해 다시 한번 생각해보면, 이를 사용해서 callback의 사용을 줄이면서 더 한눈에 들어오게 사용할 수 있다는 장점이 있다. 다른 프로그래밍 언어(ex. javascript)에서의 async await라고 생각할 수도 있다. 비동기 처리 패턴 중의 하나인데, 기존의 비동기 처리 방식인 callback의 단점을 보완하여 더 깔끔하게 코드를 작성할 수 있다. Kotlin은 suspend 키워드를 사용해서 여러 라이브러리 함수와 함께 비동기 프로그래밍을 할 수 있도록 해준다.. 2020. 5. 27.