현재 쓰레드가 메인 쓰레드인지 확인하는 법
2021-09-05 추가
Logger 라이브러리를 사용할 것을 권장드립니다.
로그캣 에서 간단하게 확인하기
로그캣에 빨간 네모박스를 보시면
1138-1138
혹은 1138-1144 라고 찍히고 있는데
4자리의 숫자 2개가 의미하는 것은 앞부터 차례대로
ProcessID, ThreadID 입니다. (이하 PID, TID)
1138-1138과 같이 PID와 TID가 같으면 메인 쓰레드에서 실행 되고 있는 것 이고,
1138-1144과 처럼 서로 다르면
1144라는 ID를 가지고있는 다른 쓰레드에서 실행되고 있는 것 입니다.
Looper를 비교해서 확인하기
원하는 코드 위치에서 Looper객체를 확인하면
지금 실행되는 코드가 메인쓰레드에서 실행되는지
메인 쓰레드가 아닌 다른 쓰레드에서 실행되는지 확인이 가능합니다.
Java
public void checkMainThread() {
//Looper.myLooper() == Looper.getMainLooper()
// true: 메인 쓰레드(O), false: 메인쓰레드(X)
Log.d(TAG, "isMainThread" + Looper.myLooper() == Looper.getMainLooper());
}
Kotlin
fun checkMainThread() {
//Looper.myLooper() == Looper.getMainLooper()
// true: 메인 쓰레드(O), false: 메인쓰레드(X)
Log.d(TAG, "isMainThread ${Looper.myLooper() == Looper.getMainLooper()}")
}
저는 라이브러리를 사용할 때 비동기작업이 필요하다면,
라이브러리 내부로직에 비동기 처리가 되어있는지 확인 후
안되어 있다면 비동기처리를 직접 해주기 위해서 사용합니다.
'안드로이드' 카테고리의 다른 글
[Android] 안드로이드 고유 식별자 (unique identifiers) (0) | 2021.03.24 |
---|---|
[Android] 웹뷰 히스토리 스택 얻는 방법 (1) | 2021.03.23 |
[Android] Release 모드로 빌드하기 (0) | 2021.03.22 |
[Android] 중복 클릭 방지 하기 (0) | 2021.03.22 |
[Android] 데이터 바인딩 적용법 변경사항 (0) | 2021.03.10 |