일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- BOJ
- CustomView
- Algorithm
- Android
- Navigation
- hilt
- kotlin
- CollapsingToolbarLayout
- DataBinding
- AppBarLayout
- onLayout
- 알고리즘
- activity
- ViewModel
- 안드로이드
- View
- HTTP
- lifecycle
- CoordinatorLayout
- 코틀린
- notification
- Behavior
- recyclerview
- 알림
- sqlite
- Coroutine
- room
- LiveData
- onMeasure
- 백준
- Today
- Total
목록Thread (2)
개발일지
allowMainThreadQueries Room에서 기본적으로 Main Thread에서 접근할 수 없지만, allowMainThreadQueries를 사용하여 만든 Instance에서는 Main Thread에서도 접근할 수 있다. => Database를 접근하는 작업은 무거운 작업이고 UI를 오랫동안 잠글 수 있기 Main Thread에서 접근하는 것은 좋지 않다. AppDatabase package com.taetae98.room.singleton import android.content.Context import androidx.room.CoroutinesRoom import androidx.room.Database import androidx.room.Room import androidx.room..
![](http://i1.daumcdn.net/thumb/C150x150/?fname=https://blog.kakaocdn.net/dn/dh0HL5/btqF3GhPOdP/1ee7b8QPOsxpaIAkG8WgX1/img.gif)
안드로이드는 기본적으로 싱글 쓰레드이다. 그렇기 때문에 메인 쓰레드에서 처리 시간이 긴 명령(데이터 베이스, 네트워크 등)을 작성하면 버벅거린다. 따라서 처리 시간이 긴 명령은 서브 쓰레드를 만들어서 처리하는게 이상적이다. 하지만 멀티 쓰레드 환경에서 나오는 여러가지 이슈 때문에 안드로이드는 UI를 메인 쓰레드에서 밖에 바꾸지 못한다. 따라서 서브 쓰레드에서 UI를 변경하려면 Handler 객체를 이용하여 메인 쓰레드와 통신해야 한다. 핸들러는 메시지뿐만 아니라 Runnable을 전달할 수 있다. Handler 핸들러는 루퍼에 의존적입니다. 핸들러를 생성하면 루퍼를 연결해야 합니다. 핸들러를 생성할 때 생성자로 루퍼를 전달하여 다른 쓰레드의 루퍼를 연결할 수 있고, 아무것도 전달하지 않으면 핸들러를 생성..