Pracuję nad aplikacją dla systemu Android z interfejsem API Google+. Mam wiele działań, z których każda wymaga jednej instancji GoogleApiClient.Tworzenie GoogleApiClient dla wielu działań
Jak rozumiem, z this post można wywołać to samo wystąpienie GoogleApiClient dla każdego działania. Moje pytanie brzmi: w jaki sposób tworzymy kopie GoogleApiClient?
Czy tworzymy go ponownie ponownie za pomocą metod .addApi(), .addscope() i narzędzia onConnected i OnConnectedFailedListener? Ponieważ wydaje się powtarzalny i nieefektywny. I czy wdrożenie tych metod nie zastąpiłoby tych samych metod również w przypadku innych działań?
Zastanawiam się nad tym, aby zachować odniesienie do GoogleAiClient w utworze statycznym i ścieżkowym w kolejce komunikatów z kilku różnych miejsc w mojej aplikacji (tj. Z działania lub usług w wyniku otrzymania wiadomości Push). Czy możesz wymyślić jakieś czerwone flagi w utrzymywaniu statycznego odniesienia do GoogleApiClient, używając kontekstu aplikacji? Wydaje się, że niewiele różni się od trzymania go w obiekcie Application. –
Korzystanie z kontekstu aplikacji wiąże się z konsekwencjami. Usługa może być kosztowna w utrzymaniu. Utrzymanie tego, gdy nie jest potrzebne, spowoduje znaczne zużycie procesora i pamięci, gdy może spowodować problemy z urządzeniami low-end i może spowodować zamknięcie aplikacji w tle. Utrzymywanie odniesienia do tego powiązanego z kontekstem aplikacji jest z tych powodów niezadowolone. Jeśli mimo wszystko zamierzasz to zrobić, nie ma znaczenia, czy przechowujesz je w obiekcie Application, czy w innym singletonie. – Hounshell
Dzięki za szybką reakcję! Zdałem sobie sprawę, że mogę używać blockingConnect na GoogleApiClient i ponieważ robię całą moją pracę w wątku w tle, sądzę, że mogę po prostu użyć metody blockingConnect na GoogleApiClient, zarejestrować moje geofences (zakładając pomyślny wynik na blockingResult) i odłączyć zaraz po. Czuję się lepiej, robiąc to w ten sposób, zamiast utrzymywać klienta i kontekst na zawsze. –