W jakich okolicznościach używanie AIDL do definiowania interfejsu usługi byłoby właściwą decyzją (a nie tylko tworzeniem rozszerzenia do klasy service
)?Kiedy korzystać z usługi opartej na pomocy?
Odpowiedz
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.
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.
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
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.
- 1. Środowisko Java do korzystania z usługi WWW opartej na JSON
- 2. Kiedy korzystać z TPanel FullRepaint?
- 3. . Na podstawie wyszukiwarki opartej na .Net opartej na .Net?
- 4. Jak korzystać z usługi $ document w angularJS?
- 5. Nie mogę utworzyć wyraźnego obrazu, dlaczego i kiedy korzystać z usług RESTful?
- 6. Jak korzystać z usługi PositionService w Gluon Mobile na iOS?
- 7. Jak korzystać z usługi Android SpeechRecognizer jako usługi?
- 8. Kiedy korzystać z interfejsów i kiedy korzystać z funkcji wyższego rzędu?
- 9. Kiedy i jak korzystać z wektora odnośników
- 10. Kiedy należy korzystać z Bigarray i dlaczego?
- 11. Wytyczne, kiedy należy korzystać z blokowania
- 12. Jak korzystać z usługi $ timeout w dyrektywie?
- 13. Kiedy korzystać z widoków bazy danych, a kiedy nie?
- 14. Kiedy można bezpiecznie korzystać z $ scope. $ Apply()?
- 15. Jak korzystać z usługi WCF z usługą SSRS 2008 R2
- 16. Kiedy korzystać z web-API MVC4 w porównaniu do tradycyjnej usługi sieciowej HTTP?
- 17. Jak korzystać z .NET 4 SplashScreen w aplikacji opartej na pryzmie WPF?
- 18. Rozwijanie architektury opartej na wtyczce na wiosnę
- 19. Jak korzystać z zewnętrznych pomocy Babel 6 w przeglądarce?
- 20. Czy istnieje prosty sposób na zapewnienie aplikacji internetowej lub usługi sieci Web opartej na Matlab?
- 21. Implementowanie kolejki opartej na plikach
- 22. Jak korzystać z usługi sieciowej ColdFusion za pomocą dotneta
- 23. Brak usługi dla typu „Microsoft.AspNetCore.Identity.SignInManager Kiedy
- 24. Kiedy używać JMS i kiedy używać usługi REST?
- 25. Zagnieżdżone elementy złożone nigdy nie są zapełniane podczas wywoływania usługi WWW opartej na AXIS od .NET
- 26. Zrozumienie, kiedy należy korzystać z usług stanowych i kiedy polegać na zewnętrznej trwałości w usłudze Azure Service Fabric
- 27. Uwierzytelnianie aplikacji WWW i mobilnej za pomocą usługi sieciowej RESTfull opartej na django
- 28. Jak korzystać z podwójnej usługi WCF przez Internet?
- 29. Potrzebujesz pomocy na realizację servicestack
- 30. Kiedy należy korzystać i kiedy należy importować w Aurelia?
Ale zakładając, że tylko Twoja aplikacja korzysta z usługi, nie ma powodów, by używać aidl - czy to prawda? – MalcomTucker
Prawidłowo. Ale w takim razie, dlaczego chciałbyś stworzyć usługę w tym przypadku? –
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