마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

api26 으로 컴파일 하면 sending message to a Handler on a dead thread 에러가 납니다...

0 추천
안녕하세요.

안드로이드 스튜디오  컴파일을 하면

 

api19 기기로는 문제없이 잘되는데 api26 기기 컴파일 하면 아래와 같은 에러를 뿜어 냅니다.

 

08-01 08:15:15.493 2103-2103/? I/app_process: System.exit called, status: 0
08-01 08:15:15.493 2103-2103/? I/AndroidRuntime: VM exiting with result code 0.
08-01 08:15:15.718 154-154/? E/adbd: failed to connect to socket 'localabstract:changwooyu.com.gmsorder': Connection refused
08-01 08:15:16.167 2122-2122/? D/AndroidRuntime: >>>>>> START com.android.internal.os.RuntimeInit uid 0 <<<<<<
08-01 08:15:16.261 2122-2122/? W/app_process: Unexpected CPU variant for X86 using defaults: x86
08-01 08:15:16.293 2122-2122/? D/AndroidRuntime: Calling main entry com.android.commands.pm.Pm
08-01 08:15:16.300 2122-2130/? W/MessageQueue: Handler (android.os.Handler) {8b2dd4b} sending message to a Handler on a dead thread
                                               java.lang.IllegalStateException: Handler (android.os.Handler) {8b2dd4b} sending message to a Handler on a dead thread
                                                   at android.os.MessageQueue.enqueueMessage(MessageQueue.java:545)
                                                   at android.os.Handler.enqueueMessage(Handler.java:661)
                                                   at android.os.Handler.sendMessageAtTime(Handler.java:630)
                                                   at android.os.Handler.sendMessageDelayed(Handler.java:600)
                                                   at android.os.Handler.post(Handler.java:356)
                                                   at android.os.ResultReceiver$MyResultReceiver.send(ResultReceiver.java:57)
                                                   at com.android.internal.os.IResultReceiver$Stub.onTransact(IResultReceiver.java:58)
                                                   at android.os.Binder.execTransact(Binder.java:674)
08-01 08:15:16.301 2122-2122/? I/app_process: System.exit called, status: 0
08-01 08:15:16.302 2122-2122/? I/AndroidRuntime: VM exiting with result code 0.
08-01 08:15:25.634 1147-1147/com.android.launcher3 I/launcher-loader: type=1400 audit(0.0:1125): avc: denied { lock } for path="/data/data/com.android.launcher3/databases/app_icons.db" dev="sdb3" ino=81840 scontext=u:r:priv_app:s0:c512,c768 tcontext=u:object_r:system_data_file:s0:c512,c768 tclass=file permissive=1
                                                                      

왜 이럴까요?
익명사용자 님이 2018년 8월 1일 질문

1개의 답변

0 추천

종료된 쓰레드의 메시지큐에 메시지를 보내려고해서 에러가 난것 같네요 

핸들러 생성할 때 다음과 같은 방법으로 생성해 보세요

 Handler h = new Handler(Looper.getMainLooper());

 

luxsoft (1,780 포인트) 님이 2018년 8월 1일 답변
...