2010-07-26 20 views

Odpowiedz

5

Samo rozszerzenie klasy usług nie pozwoli Twojej usłudze na ujawnienie swoich metod podmiotom zewnętrznym. Jeśli chcesz, aby twoja usługa była eksponowana/używana przez kod, na który skończy się twoja aplikacja na Androida, musisz zdefiniować dla niej swój AIDL. Ten AIDL zostanie udostępniony i zostanie utworzony jako umowa o świadczenie usługi. Odwołaj się do tego http://developer.android.com/guide/components/aidl.html.

+3

Ale zakładając, że tylko Twoja aplikacja korzysta z usługi, nie ma powodów, by używać aidl - czy to prawda? – MalcomTucker

+1

Prawidłowo. Ale w takim razie, dlaczego chciałbyś stworzyć usługę w tym przypadku? –

+1

Stworzyłem usługę lokalną w mojej aplikacji, aby pobrać większy plik. W ten sposób mógłbym mieć trochę więcej kontroli i bezpieczeństwa niż zadanie asynchroniczne, które można zabić za każdym razem. Jak rozumiem, usługa, która jest związana z działaniem, nie może zostać zabita, jeśli zasoby są ograniczone. – Janusz

6

Musisz użyć AIDL, jeśli chcesz, aby klasa spoza procesu aplikacji uzyskała dostęp do Usługi. Jeśli korzystasz z tej usługi tylko z poziomu aplikacji, możesz użyć numeru local service.

0

1. w przypadku korzystania z usługi opartej na pomocy.

Kilka korzyści można osiągnąć przez części segmentu kodu do użytku backend:

  • DECOUPLE front-end i backend
  • pamięci/cpu intensywne przetwarzanie może być ułożone do służby zaplecza, GC w służbie nie wpłynie na doświadczenie użytkownika frontonu
  • serwis awaria nie obniżą całą APP

2.Jak stworzyć taką usługę

Pisałem dobrą bibliotekę, można odnieść jako przykład http://github.com/zhchang/hogwarts

0

AIDL

Interfejs Android Definition Language (AIDL) umożliwia programistom zdefiniowanie interfejsu programowania że stosowanie klient i serwer komunikować się ze sobą za pomocą komunikacji między procesami (IPC).

W tym artykule pokazano, jak połączyć się z działającą usługą w systemie Android i jak pobrać dane z usługi zdalnej/uruchomionej.

Przykład mechanizmu IPC

Let RemoteService być obsługa klienta i RemoteServiceClient być aktywny, aby komunikować się ze zdalną obsługą.

Jedna usługa zawiera informacje o operacjach matematycznych, takich jak dodawanie, odejmowanie i mnożenie dla danych dwóch liczb całkowitych. Aby udostępnić funkcjonalność usługi, możesz utworzyć plik .aidl w katalogu projektu.

AIDL Example