Должны ли вы подключаться и отключаться от Google Play Services в каждом действии?

Я пишу приложение, которое требует подключенного клиента местоположения во всех действиях. Как управлять состоянием клиента?

Я хочу позвонить mLocationClient.connect() только один раз, чтобы избежать хлопот, и должен быть в состоянии удалить обновления местоположения / отключить, когда приложение останавливается.

Как сохранить клиент определения местоположения подключенным ко всем действиям, если я подключился к нему на заставке Activity?

Другой вопрос, который возникает здесь, заключается в том, что, когда я возобновляю приостановленное приложение (не отдых), приложение не запускается с заставкой. Как мне поддерживать соединение в этом случае?

Заранее спасибо.

1 ответ

Решение

Вам нужен связанный сервис: эти сервисы работают только тогда, когда к нему подключен клиент (например, одно из ваших действий). Это позволяет вам иметь общее состояние (один подключенный клиент местоположения), в то же время гарантируя, что вы подключаетесь / отключаетесь соответствующим образом.

В этой ситуации любая активность, связанная с определением местоположения, будет привязана к услуге. Когда первая активность (скажем, ваша заставка) связывается со службой, она запускается и подключается к Службам Google Play. Ваш сервис Binder затем даст доступ к его LocationClient к любой связанной деятельности. При перемещении между действиями каждое из них будет по очереди связываться со службой и сможет получать данные о текущем местоположении, а каждое будет по мере их уничтожения.

Когда пользователь выходит из вашего приложения (т. Е. Последнее действие уничтожается), служба автоматически останавливается, позволяя вам отключиться от Google Play Services.

Пока вы привязываетесь к сервису из каждого действия, для которого требуются данные о местоположении, не имеет значения, какое действие запускает сервис изначально: сервис будет просто подключаться при необходимости.

Другие вопросы по тегам