【发布时间】:2011-05-03 04:23:58
【问题描述】:
我在我的应用程序中使用处理程序,在一个屏幕中通过单击一个按钮将调用一组代码。要调用该组代码,我将向处理程序发送消息并覆盖处理消息方法。第一次单击按钮时,处理程序完美运行并执行了一组代码。当我第二次单击该按钮时,出现以下异常。
05-03 09:45:25.703: ERROR/AndroidRuntime(1971): FATAL EXCEPTION: main
05-03 09:45:25.703: ERROR/AndroidRuntime(1971): android.util.AndroidRuntimeException: { what=1 when=7381217 obj=android.app.AlertDialog@462b5c58 } This message is already in use.
05-03 09:45:25.703: ERROR/AndroidRuntime(1971): at android.os.MessageQueue.enqueueMessage(MessageQueue.java:171)
05-03 09:45:25.703: ERROR/AndroidRuntime(1971): at android.os.Handler.sendMessageAtTime(Handler.java:457)
05-03 09:45:25.703: ERROR/AndroidRuntime(1971): at android.os.Handler.sendMessageDelayed(Handler.java:430)
05-03 09:45:25.703: ERROR/AndroidRuntime(1971): at android.os.Handler.sendMessage(Handler.java:367)
05-03 09:45:25.703: ERROR/AndroidRuntime(1971): at com.mysnob.utils.MessageDialog$8.onClick(MessageDialog.java:93)
05-03 09:45:25.703: ERROR/AndroidRuntime(1971): at com.android.internal.app.AlertController$ButtonHandler.handleMessage(AlertController.java:158)
05-03 09:45:25.703: ERROR/AndroidRuntime(1971): at android.os.Handler.dispatchMessage(Handler.java:99)
05-03 09:45:25.703: ERROR/AndroidRuntime(1971): at android.os.Looper.loop(Looper.java:144)
05-03 09:45:25.703: ERROR/AndroidRuntime(1971): at android.app.ActivityThread.main(ActivityThread.java:4937)
05-03 09:45:25.703: ERROR/AndroidRuntime(1971): at java.lang.reflect.Method.invokeNative(Native Method)
05-03 09:45:25.703: ERROR/AndroidRuntime(1971): at java.lang.reflect.Method.invoke(Method.java:521)
05-03 09:45:25.703: ERROR/AndroidRuntime(1971): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868)
05-03 09:45:25.703: ERROR/AndroidRuntime(1971): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626)
05-03 09:45:25.703: ERROR/AndroidRuntime(1971): at dalvik.system.NativeStart.main(Native Method)
我可以理解,当我再次发送相同的消息时,我得到了这个异常。但是我不知道如何解决这个问题,如果有人知道请帮助我。
谢谢,
拉贾潘迪安
【问题讨论】:
-
你是在handler中调用removeMessages(what)和Message.obtainMessage(what)来获取消息吗?
-
@JAL 我正在使用 Message.obtainMessage() 获取消息,我检查了 Message.obtainMessage(what) 但我没有找到任何这样的方法。
-
从文档中获取消息(int what)与获取消息()相同,除了它还设置返回消息的what成员。链接:developer.android.com/reference/android/os/…
-
removeMessages(what) 不需要使用 gainMessage(what)