반응형
안드로이드에서 UI 스레드를 감지하는 방법?
Thread.currentThread()
애플리케이션에 Android 시스템 UI 스레드가 있는지 감지하는 강력한 방법이 있습니까?
하나의 스레드 ( 예 : ui 스레드) 만 내 상태에 액세스하여 어떤 종류의 동기화가 필요하지 않다고 주장하는 몇 가지 주장을 모델 코드에 넣고 싶습니다 .
UI 스레드의 ID를 확인하는 일반적인 방법은 Looper # getMainLooper를 사용하는 것입니다 .
if (Looper.getMainLooper().getThread() == Thread.currentThread()) {
// On UI thread.
} else {
// Not on UI thread.
}
가장 좋은 방법은 이것이라고 생각합니다.
if (Looper.getMainLooper().equals(Looper.myLooper())) {
// UI thread
} else {
// Non UI thread
}
API 레벨 23 Looper
부터는 멋진 도우미 메소드가 isCurrentThread
있습니다. 당신은을 얻을 수 mainLooper
그것은 현재의 thread 이러한 방법의 하나입니다 있는지 확인합니다 :
Looper.getMainLooper().isCurrentThread()
실제로 다음과 같습니다.
Looper.getMainLooper().getThread() == Thread.currentThread()
그러나 좀 더 읽기 쉽고 기억하기 쉬울 수 있습니다.
public boolean onUIThread() {
return Looper.getMainLooper().isCurrentThread();
}
그러나 API 레벨 23이 필요합니다
looper 확인 외에도 스레드 ID 를 로그 아웃 하려고 시도 onCreate()
하면 UI 스레드 (주 스레드) ID가 항상 1과 같습니다.
if (Thread.currentThread().getId() == 1) {
// UI thread
}
else {
// other thread
}
클래스 에서 runOnUiThread
메소드 를 사용할 수 Activity
없습니까?를 참조하십시오.
참고 URL : https://stackoverflow.com/questions/2848575/how-to-detect-ui-thread-on-android
반응형
'program story' 카테고리의 다른 글
Retrofit 2로 빈 반응 바디를 어떻게 처리 할 수 있습니까? (0) | 2020.07.28 |
---|---|
“-”대시를 사용하여 JSON 속성에 액세스 할 수 없습니다 (0) | 2020.07.28 |
dplyr을 사용하여 테이블의 모든 행에 함수를 적용 하시겠습니까? (0) | 2020.07.28 |
C #에서 개체 속성 비교 (0) | 2020.07.28 |
MySQL-하나의 쿼리에서 다른 값으로 여러 행 업데이트 (0) | 2020.07.28 |