Доступ к одной услуге из двух действий - PullRequest
0 голосов
/ 06 ноября 2019

У меня есть приложение, для которого я создал фоновый сервис для предоставления обновлений местоположения GPS - потому что GPS обычно не дает быстрых обновлений, когда активность находится в фоновом режиме по причинам потребления батареи.

В основном это работаетХорошо, служба запускается из основной активности, затем привязывается к ней, и я могу получить к ней доступ и без проблем получить обратные вызовы местоположения.

Но мне нужно получить доступ к этой же службе из другой активности в том же приложении. ,Таким образом, во втором упражнении я связал только службу (не запустил - она ​​уже запущена).

Служба, по-видимому, предоставляет обновления местоположения для второго действия, но мой вопрос:тот же экземпляр службы, или был запущен второй экземпляр? Причиной этого вопроса является вывод LogCat (ниже):

11-06 12:49:45.939 25852-25852/uk.co.nightshadearts.gpscompass V/BackgroundLocationService - MA: in onCreate()
11-06 12:49:45.940 25852-25852/uk.co.nightshadearts.gpscompass V/BackgroundLocationService - MA: starting service
11-06 12:49:45.942 25852-25852/uk.co.nightshadearts.gpscompass V/BackgroundLocationService - MA: binding service
11-06 12:49:45.949 25852-25852/uk.co.nightshadearts.gpscompass V/BackgroundLocationService - BC: in constructor
11-06 12:49:45.973 25852-25852/uk.co.nightshadearts.gpscompass V/BackgroundLocationService - BC: in onStart()
11-06 12:49:46.011 25852-25852/uk.co.nightshadearts.gpscompass V/BackgroundLocationService: in constructor
    in onCreate()
11-06 12:49:46.025 25852-25852/uk.co.nightshadearts.gpscompass V/BackgroundLocationService: in onBind()
11-06 12:49:46.111 25852-25852/uk.co.nightshadearts.gpscompass V/BackgroundLocationService - MA: service connected
11-06 12:50:27.048 25852-25852/uk.co.nightshadearts.gpscompass V/BackgroundLocationService - GH: in onLocationChanged()
.... (lots more locations here - below is where it swapped to activity #2)
11-06 12:51:05.044 25852-25852/uk.co.nightshadearts.gpscompass V/BackgroundLocationService - GH: in onLocationChanged()
11-06 12:51:05.650 25852-25852/uk.co.nightshadearts.gpscompass V/BackgroundLocationService - MAP: in onCreate()
    binding service
11-06 12:51:06.773 25852-25852/uk.co.nightshadearts.gpscompass V/BackgroundLocationService - MAP: service connected
11-06 12:51:06.776 25852-25852/uk.co.nightshadearts.gpscompass V/BackgroundLocationService - GH: in onLocationChanged()
11-06 12:51:07.040 25852-25852/uk.co.nightshadearts.gpscompass V/BackgroundLocationService - GH: in onLocationChanged()
11-06 12:51:07.411 25852-25852/uk.co.nightshadearts.gpscompass V/BackgroundLocationService - BC: in onStop()
11-06 12:51:08.046 25852-25852/uk.co.nightshadearts.gpscompass V/BackgroundLocationService - GH: in onLocationChanged()
.... (here is where I put the 2nd activity into the background)
11-06 12:51:22.058 25852-25852/uk.co.nightshadearts.gpscompass V/BackgroundLocationService - GH: in onLocationChanged()
11-06 12:51:22.379 25852-25852/uk.co.nightshadearts.gpscompass V/BackgroundLocationService - MAP: in onDestroy() (unbinding service)
11-06 12:51:22.383 25852-25852/uk.co.nightshadearts.gpscompass V/BackgroundLocationService - MAP: in onDestroy (stopping service)
11-06 12:51:23.038 25852-25852/uk.co.nightshadearts.gpscompass V/BackgroundLocationService - GH: in onLocationChanged()
11-06 12:51:24.040 25852-25852/uk.co.nightshadearts.gpscompass V/BackgroundLocationService - GH: in onLocationChanged()

Путаница в том, что когда я помещаю второе действие в фоновый режим, вы можете видеть, что оно прошло через действие onDestroy (), отменяя привязкуи затем остановка службы - но после этого все еще происходили обновления местоположения.

Это потому, что (а) на самом деле есть два отдельных экземпляра службы (я надеюсь, что нет), или (б), потому что этоне остановил службу, потому что исходное действие все еще было связано с ней, или (c) что-то еще?

1 Ответ

0 голосов
/ 07 ноября 2019

Сам нашел ответ - есть только один экземпляр службы, доступ к которому осуществляется из обоих действий.

Сделал это, сохранив имя действия в службе и прочитав и записав его из каждого действия.

...