Zarejestruj odbiornik transmisji z usługi w nowym wątku

Mam odbiorcę transmisji, który rozpoczyna długą operację (proces przesyłania). W kodzie usługi uruchomionej z klasy Activity muszę zarejestrować ten odbiornik w nowym wątku.

Sprawdziłem ten postCzy nadawcy Androidów zaczęli działać w nowym wątku? ale potrzebuję bardziej konkretnego przykładu na temat korzystania z Context.registerReceiver (odbiornik BroadcastReceiver, filtr IntentFilter, String broadcastPermission, Handler scheduler)

Właściwie muszę wiedzieć, jak utworzyć nowy wątek z usługi i zarejestrować odbiorcę i dołączyć go do tego wątku.

Dziękuję Ci bardzo. RA

 Rami21 maj 2012, 11:11
Cześć Aashish, dziękuję za uwagę. Naprawdę pytam o kod :) Nie wiem dokładnie, jak zarejestrować odbiornik w nowym wątku. Potrzebuję przykładu, jeśli to możliwe. Szukałem w sieci, jak to zrobić, ale nie mogłem znaleźć takiego przykładu. Zrozumiałem, że 1) musimy utworzyć nowy wątek i 2) obsługę tego wątku, a następnie 3) zarejestrować odbiorcę w nowym wątku za pomocą programu obsługi. Czy ktoś może mi podać krótki przykład lub wyjaśnienie, jak to zrobić? Dzięki
 Aashish Bhatnagar21 maj 2012, 11:04
proszę opracować, jeśli to możliwe, dodać kod
 ρяσѕρєя K21 maj 2012, 11:07
czytaj komentarze wstackoverflow.com/questions/5394950/… post otrzymasz odpowiedź nie nie jest możliwe bez onRecive metoda jest wywoływana w głównym wątku

questionAnswers(1)

QuestionSolution

W twojej służbieonCreate():

private Handler handler; // Handler for the separate Thread

HandlerThread handlerThread = new HandlerThread("MyNewThread");
handlerThread.start();
// Now get the Looper from the HandlerThread so that we can create a Handler that is attached to
//  the HandlerThread
// NOTE: This call will block until the HandlerThread gets control and initializes its Looper
Looper looper = handlerThread.getLooper();
// Create a handler for the service
handler = new Handler(looper);
// Register the broadcast receiver to run on the separate Thread
registerReceiver (myReceiver, intentFilter, broadcastPermission, handler);
 David Wasser21 maj 2012, 11:52
Przepraszam za to. Skopiowałem ten kod z jednej z moich usług i ta usługa zaimplementowała samo wywołanie zwrotne handleMessage (). Dlategothis parametr był tam. Cieszę się, że mogę pomóc.
 Rami21 maj 2012, 11:51
Uwaga: Dostałem błąd informujący mnie, że Handler (looper, this) jest niezdefiniowany i że muszę usunąć argument „this” lub rzutować go na Callback. Usunąłem ten argument i działa. Dziękuję Ci. RA
 Rami21 maj 2012, 11:41
Cześć David, dziękuję bardzo! teraz działa :) Naprawdę doceniam twoją pomoc.

yourAnswerToTheQuestion