본문 바로가기

코루틴3

[오류] android.view.ViewRootImpl$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views. 해결 법 최근 개발 중 timer를 사용하다가 아래와 같은 오류를 발견했다. android.view.ViewRootImpl$CalledFromWrongThreadException: Only the original thread that created a view hierarchy can touch its views. timer(period = 3000, initialDelay = 3000) { with(binding) { if (count >= 3) { count = 0 } else { ++count } textExTitle.text = exTitleList[count] textExContent.text = exContentList[count] } } 위 코드를 보면 timer 스코프 안에서 textView의 te.. 2022. 12. 18.
코루틴(Coroutine)이란? 비동기 처리를 하는 데에는 몇 가지 방법이 있다. Rx는 다양한 기능을 제공하지만 진입 장벽이 높아 학습에 오랜 시간이 걸린다. 코루틴을 이용하면 비동기스럽지 않게 생긴 코드로, 메모리를 효율적으로 사용하면서 손쉽게 비동기 처리를 할 수 있다. 그래서 간단히 알아보았다. # 코루틴(Coroutine) 비동기적으로 실행되는 코드를 간소화하기 위해 Android에서 사용할 수 있는 동시 실행 설계 패턴이다. 코틀린 언어의 하위 개념인 줄 알았는데, C#이나 Python, Go 등 다양한 언어에서 이미 지원하고 있는 개념이다. Coroutine을 사용하는-즉 백그라운드 태스크가 필요한-대표적인 경우는 아무래도 1. 네트워크 리퀘스트 (Retrofit, Volley 등) 2. 내부 저장소 접근 (Room, SQ.. 2022. 2. 4.
Android Jetpack - 1편 (Room) 예제를 이용한 사용법 # Room이란? Room은 스마트폰 내장 DB에 데이터를 저장하기 위해 사용하는 라이브러리이다. 다양한 Annotation을 통해 컴파일 시 코드들을 자동으로 만들어주며 LiveData, RxJava와 같은 Observation 형태를 지원하고 MVP, MVVM과 같은 아키텍처 패턴에 쉽게 활용할 수 있도록 되어있다. 과거에는 SQLite라는 데이터베이스 엔진을 이용해 데이터를 저장했으나 안드로이드 공식 문서에서는 다음과 같은 이유로 Room사용을 지향 하고 있다 Room은 완전히 새로운 개념은 아니고, SQLite를 활용해서 객체 매핑을 해주는 역할을 한다. # Room 구조 Room은 위에 사진처럼 Database,Entity,Dao(Data Access Object) 3가지 구성요소가 있다. # .. 2022. 1. 20.