Komunikacja między usługą a aktywnością na Androidzie
Jakie są sposoby komunikacji między działaniem a usługą na Androidzie?
Dzisiaj dowiedziałem się, jak komunikować się, wysyłając Intent from Activity i odpowiadając za pomocą BroadcastRecevier.
Jakie są moje inne opcje? Czy ktoś ma tutorial / referencję dotyczącą tego?
Odpowiedź na to pytanie brzmi:
Istnieje kilka sposobów komunikowania się aktywności z usługą i odwrotnie. Ta sekcja omawia różne sposoby i podaje zalecenia, których należy użyć.
5.1. Powiązanie działań z usługą lokalną Jeśli usługa jest uruchamiana w tym samym procesie, co działanie, działanie może bezpośrednio wiązać się z usługą. Jest to stosunkowo prosty i skuteczny sposób komunikacji.
5.2. Korzystanie z odbiornika Do komunikacji można również użyć dynamicznie zarejestrowanych odbiorników. Na przykład Twoja aktywność może dynamicznie rejestrować odbiornik, a usługa wysyła odpowiednie zdarzenia.
5.3. AIDL dla usług w innym procesie Aby powiązać z usługą, która działa w innym procesie, należy użyć komunikacji między procesami (IPC), ponieważ dane muszą być przesyłane między różnymi procesami. W tym celu musisz utworzyć plik AIDL, który wygląda podobnie do interfejsu Java, ale kończy się rozszerzeniem pliku .aidl i może rozszerzać tylko inne pliki AIDL.
Takie podejście jest wymagane, jeśli twoja usługa powinna być dostarczona do innych aplikacji, w przeciwnym razie powinieneś wybrać usługę lokalną.
5.4. Wysyłanie danych zamiaru i wiązanie do usług Usługa odbiera dane z początkowego komponentu Androida i może korzystać z tych danych.
5.5. Handler i Messenger Jeśli usługa powinna komunikować się z powrotem do działania, może odebrać obiekt typu Messenger za pośrednictwem danych intencji otrzymanych z działania. Jeśli Messenger jest związany z Handlerem w działaniu, usługa może wysyłać obiekty typu Wiadomość do działania.
Komunikator jest paczkowany, co oznacza, że może zostać przekazany do innego procesu i możesz użyć tego obiektu do wysyłania wiadomości do obsługi w trakcie działania.
Messenger udostępnia również metodę getBinder (), która umożliwia przekazanie komunikatora do działania. Aktywność może zatem wysyłać wiadomości do usługi.
Dziękihttp://www.vogella.com/articles/AndroidServices/article.html