Провайдер Fused Location останавливается без причины

Я использую Fused location provider, чтобы получать частые обновления местоположения в зависимости от потребностей пользователей. Использование BroadCast Reciever для получения обновлений местоположения с помощью класса LocationRequest.

Используя ожидающее намерение, я инициализирую получателя.

    mPendingIntent = PendingIntent.getBroadcast(this, 1, mIntentService, 0);

И получать обновления местоположения от поставщика Fusion.

LocationServices.FusedLocationApi.requestLocationUpdates(mGoogleApiClient,mLocationRequest, mPendingIntent);

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

Приложение не остановлено или перестало получать данные о местоположении от FusedLocationApi.


person S A R    schedule 05.01.2016    source источник
comment
Логкэт смотрел? Там есть что-нибудь интересное? Кроме того, это только на Marshmallow или на старых API?   -  person Shmuel    schedule 05.01.2016
comment
Эта проблема SO может быть связана с вашим запросом.   -  person adjuremods    schedule 06.01.2016
comment
@Shmuel Не указано ни для каких версий, это обычное дело. Ничего особенного в логарифме   -  person S A R    schedule 06.01.2016
comment
@adjuremods В нем нет принятого ответа, как я попробую.   -  person S A R    schedule 06.01.2016


Ответы (1)


Думаю, ничего страшного в вашем FusedLocationApi. Проблема BroadcastReceiver.

Процесс, который в настоящее время выполняет BroadcastReceiver (то есть в настоящее время выполняет код в своем методе onReceive(Context, Intent)), считается процессом переднего плана и будет продолжать выполняться системой, за исключением случаев крайней нехватки памяти.

Как только вы вернетесь из onReceive(), BroadcastReceiver больше не будет активным.

Это означает, что для более длительных операций вы часто будете использовать Service в сочетании с BroadcastReceiver, чтобы держать содержащий процесс активным в течение всего времени вашей операции.

Чтобы узнать больше, нажмите здесь

person sivaBE35    schedule 13.06.2016
comment
Я использую IntentService, и проблема также возникает со мной. - person Fernando Gallego; 27.01.2017