problem-Handler mit Nachrichten in android
Bin ich mit dem Handler in meiner Anwendung in einem Fenster durch klicken auf eine Schaltfläche einen Satz von codes aufgerufen werden.Für den Aufruf der code-ich bin das senden von Nachrichten an die Prozedur und überschreiben die Nachrichten verarbeiten-Methode. Erste mal, wenn Sie auf den button handler funktioniert perfekt und der code ausgeführt wird. Wenn ich klickte den Knopf für das zweite mal, dass ich bin immer die Ausnahme.
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)
Kann ich verstehen, dass beim senden die gleiche Meldung wieder bekomme ich diese exception. Aber ich weiß nicht, wie dieses problem zu lösen, wenn jemand weiß, bitte helfen Sie mir.
Dank,
Rajapandian
Rufen Sie removeMessages(was) in dem handler und Message.obtainMessage(was) erhalten Sie die Nachricht?
Ich erhalte die Nachricht über Nachricht.obtainMessage(), ich habe in der Nachricht.obtainMessage(was) aber ich habe nicht gefunden eine Methode wie diese.
Von den docs obtainMessage(int was) wie obtainMessage(), außer dass es bestimmt auch die, welche Mitglied der Nachricht. Link: developer.android.com/reference/android/os/...
mögliche Duplikate von Android-Handler Message-und ListView
removeMessages(was) ist nicht notwendig, mit obtainMessage(was)
Ich erhalte die Nachricht über Nachricht.obtainMessage(), ich habe in der Nachricht.obtainMessage(was) aber ich habe nicht gefunden eine Methode wie diese.
Von den docs obtainMessage(int was) wie obtainMessage(), außer dass es bestimmt auch die, welche Mitglied der Nachricht. Link: developer.android.com/reference/android/os/...
mögliche Duplikate von Android-Handler Message-und ListView
removeMessages(was) ist nicht notwendig, mit obtainMessage(was)
InformationsquelleAutor Rajapandian | 2011-05-03
Du musst angemeldet sein, um einen Kommentar abzugeben.
Sollten Sie nie Wiederverwendung eine Nachricht obj. Denken Sie daran, um neue eine neue Nachricht obj jedes mal, wenn Sie eine Nachricht senden, wenn Sie brauchen, um Samen Nachricht wieder und wieder.
InformationsquelleAutor Charlie Yang
Gibt es eine helper-Methode, die eine Kopie Ihrer Nachricht.
Mit, Sie können uns die Kopie Ihres original-Nachricht anstatt des zurücksendens der gleiche Objekt (das würde scheitern, wenn die Vorherige noch verwendet wird).
Andere schlagen vor, entfernen der Nachricht aus der Hf und senden Sie es erneut wieder. Es würde lösen die Ausnahme, aber es ist unwahrscheinlich, dass Sie würde wollen, dass. Entfernen und erneutes verursachen könnte, nicht zugestellte Nachrichten zu verirren. Das ist, warum ich empfehlen, eine Kopie Ihrer Nachricht.
Prüfen Sie Ihre Nachrichten, und seien Sie sicher, dass Sie nicht senden Sie zweimal.
UPDATE:
Und deutlich zu machen... Sie können das senden von Nachrichten mit der gleichen
what
(oder anderen gleichen Parametern) wie viele Zeit, wie Sie wollen. Die einzige Sache, die Sie müssen sicher sein, über neue Fehlermeldung jedes mal, wenn Sie eine Nachricht senden. Sie müssen nicht alles entfernen, es wird Hinzugefügt werden, um die Handler die message queue.Ich habe dies getan, tausend mal, und getestet habe ich es jetzt. Es funktioniert. Sie muss versaut haben smth.
InformationsquelleAutor kupsef
Müssen Sie Nachrichten von Ihrem handler.
Siehe mein Beispiel unten: ich verwenden Sie diese Prozedur zum senden von Nachrichten an mein dialog (mDialog)
InformationsquelleAutor mugume david