2012-07-10 10 views
9

Chcę wiedzieć, jakie jest dokładne znaczenie removeCallbacks (Runnable r) w Handler. Przeszedłem jego documentation i po prostu mówi "Usuń wszelkie oczekujące posty Runnable r, które są w kolejce wiadomości".Jakie jest znaczenie removeCallbacks (Runnable r) w Handler w Androidzie

Teraz moje pytanie brzmi, czy moja wiadomość została już rozpoczęta przez mojego handlarza, a pośrednicząc, jeśli zadzwonię pod numer removeCallbacks, czy przerwie przetwarzanie mojej niepełnej wiadomości? Lub nawet jeśli zadzwonię pod numer removeCallbacks, zostanie uruchomiony komunikat, który już rozpoczął przetwarzanie przez mój przewodnik (gdy zadzwonię pod numer post(Runnable r))?

Odpowiedz

8

Runnables powinny być wykonywane tylko po wyjściu z kolejki komunikatów, więc jeśli wiadomość już rozpoczęła przetwarzanie, nie powinno być wykonywane przez wywołanie removeCallbacks. To powinno być już usunięte, więc będzie kontynuować przetwarzanie.

+0

OK ... Dziękuję kolego .. !!! – AndroDev

+0

Witaj, Bill ... Jeszcze jedna rzecz. Jeśli korzystam z asynchronicznego zadania i podczas pracy w OnPostExecute, a następnie zadzwonię do asynctask.cancel (true), w takim przypadku onPostExecute również zostanie anulowany? – AndroDev

+0

@AndroDev Nie wiem. To powinno być opublikowane jako osobne pytanie. –

10

Po utworzeniu nowego Handler jest on powiązany z wątkiem/kolejką komunikatów wątku, który ją tworzy. Od tego momentu będzie dostarczać komunikaty i programy do tej kolejki komunikatów i uruchamiać je, gdy wyjdą z kolejki komunikatów. removeCallbacks po prostu usuwa te gry, które jeszcze nie rozpoczęły przetwarzania z kolejki.

+0

Dziękuję Alex. – AndroDev