2012-01-22 8 views
1

UL UI를 변경하기 위해 메시지를 메인 UI 스레드로 전달하는 간단한 스레드를 구현하고 있지만 때로는이 예외가 발생하고 그 정확한 이유를 파악할 수 없습니다.java.lang.RuntimeException : 주 스레드 루프가 예기치 않게 종료되었습니다. 그 이유는 무엇입니까?

01-22 21:03:50.035: E/AndroidRuntime(18076): FATAL EXCEPTION: main 
01-22 21:03:50.035: E/AndroidRuntime(18076): java.lang.RuntimeException: Main thread loop unexpectedly exited 
01-22 21:03:50.035: E/AndroidRuntime(18076): at android.app.ActivityThread.main(ActivityThread.java:4426) 
01-22 21:03:50.035: E/AndroidRuntime(18076): at java.lang.reflect.Method.invokeNative(Native Method) 
01-22 21:03:50.035: E/AndroidRuntime(18076): at java.lang.reflect.Method.invoke(Method.java:511) 
01-22 21:03:50.035: E/AndroidRuntime(18076): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784) 
01-22 21:03:50.035: E/AndroidRuntime(18076): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551) 
01-22 21:03:50.035: E/AndroidRuntime(18076): at dalvik.system.NativeStart.main(Native Method) 
01-22 21:03:50.109: E/JavaBinder(18076): *** Uncaught remote exception! (Exceptions are not yet supported across processes.) 
01-22 21:03:50.109: E/JavaBinder(18076): android.util.AndroidRuntimeException: { what=102 when=-14h26m28s942ms [email protected] } This message is already in use. 
01-22 21:03:50.109: E/JavaBinder(18076): at android.os.MessageQueue.enqueueMessage(MessageQueue.java:187) 
01-22 21:03:50.109: E/JavaBinder(18076): at android.os.Handler.sendMessageAtTime(Handler.java:473) 
01-22 21:03:50.109: E/JavaBinder(18076): at android.os.Handler.sendMessageDelayed(Handler.java:446) 
01-22 21:03:50.109: E/JavaBinder(18076): at android.os.Handler.sendMessage(Handler.java:383) 
01-22 21:03:50.109: E/JavaBinder(18076): at android.app.ActivityThread.queueOrSendMessage(ActivityThread.java:1834) 
01-22 21:03:50.109: E/JavaBinder(18076): at android.app.ActivityThread.access$200(ActivityThread.java:123) 
01-22 21:03:50.109: E/JavaBinder(18076): at android.app.ActivityThread$ApplicationThread.schedulePauseActivity(ActivityThread.java:505) 
01-22 21:03:50.109: E/JavaBinder(18076): at android.app.ApplicationThreadNative.onTransact(ApplicationThreadNative.java:78) 
01-22 21:03:50.109: E/JavaBinder(18076): at android.os.Binder.execTransact(Binder.java:338) 
01-22 21:03:50.109: E/JavaBinder(18076): at dalvik.system.NativeStart.run(Native Method) 
+2

로그에 Message 객체를 다시 사용하려고한다는 메시지가 표시됩니다. 그렇게하지 마라. 각 메시지에 대해 새 Message 객체를 가져옵니다. 알아낼 수없는 경우 메시지를 보내는 코드를 게시하십시오. –

+1

예, 동일한 메시지 객체를 사용하고있었습니다. Thnxs :) 나는 그것을 작동하는 것으로 표시 할 수 있도록 답변을 게시하십시오. –

답변

1

테드 Hopp는 말했다 :

로그는 메시지 개체를 다시 사용하려고하는 것을 말한다. 그렇게하지 마라. 각 메시지에 대해 새 Message 객체를 가져옵니다.

그래서 새로운 메시지를 사용하여 내 문제가 해결되었습니다. 내가 그에게 그렇게 대답하도록 요청한 후에도 그는 대답을 게시하지 않으므로 그 대답을 받아 들일 수 있습니다.

그래서 저는 혼자서하고 있습니다.

당신이 두 번 같은 메시지 개체 을 보내거나 한 번 또한 문제가 발생할 수보다 더 많은

0

을 :) 감사합니다. 따라서 코드를 살펴보고 문제를 확인하십시오. 내 것이 이유였다.

관련 문제