앱을 실행하던 도중 다음과 같은 에러가 떴다.
E AndroidRuntime: FATAL EXCEPTION: Thread-2656
E AndroidRuntime: java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare()
E AndroidRuntime: at android.os.Handler.<init>(Handler.java:204)
E AndroidRuntime: at android.os.Handler.<init>(Handler.java:118)
E AndroidRuntime: at android.app.Dialog.<init>(Dialog.java:123)
E AndroidRuntime: at android.app.AlertDialog.<init>(AlertDialog.java:201)
E AndroidRuntime: at android.app.AlertDialog$Builder.create(AlertDialog.java:1088)
E AndroidRuntime: at java.lang.Thread.run(Thread.java:764)
검색을 해보니, 일반 thread 안에 thread를 사용했기 때문이라고 한다.
일반 thread안에서 ui 관련 작업을 위해서는 handler로 처리하는게 좋다고 한다.
참고로... 나는 thread 안에 새로운 thread를 생성했더니 저 에러가 떠서 다시 runOnUIThread를 생성했더니 또 저 에러가 떴다....
그래서 수정한 코드는 다음과 같다.
private Handler mHandler = null;
mHandler = new Handler(Looper.getMainLooper());
mHandler.postDelayed(new Runnable() {
@Override
public void run() {
work_ui_test(); // ui관련 작업.
}
}, 0);
주의할 점은 Handler를 생성할 때 그냥 new Handler() 로 생성하면 안되고, 꼭 mHandler = new Handler(Looper.getMainLooper()); 이렇게 생성해서 ui 관련 작업을 처리해야된다고 한다.
320x100
'프로그래밍 > Android-Java' 카테고리의 다른 글
[ANDROID] StringBuffer 비우기 (0) | 2020.12.16 |
---|---|
[ANDROID] byte array 초기화 (0) | 2020.12.16 |
[ANDROID] byteArray to String (0) | 2020.12.15 |
[ANDROID] custom toast 커스텀 토스트 (0) | 2020.12.15 |
[ANDROID] Dialog 밖의 어두운 배경 없애기 (0) | 2020.12.14 |
댓글