0

Смутно, FusedLocationProviderApi прекращает отправку намерений.Почему активность GoogleApiClient ActivityRecognitionApi Android по-прежнему отправляет PendingIntents после того, как экземплярная служба была убита?

Немного подробней: У меня есть служба Android, которая создает GoogleApiClient.

mClient = new GoogleApiClient.Builder(this) 
     .addApi(LocationServices.API) 
     .addApi(ActivityRecognition.API) 
     .addConnectionCallbacks(this) 
     .addOnConnectionFailedListener(this) 
     .build(); 
mClient.connect(); 

После подключения, я запросить обновления местоположения с помощью:

// Set up periodic location updates 
Intent locationIntent = new Intent(this, LocationReceiver.class); 
mLocationPendingIntent = PendingIntent.getBroadcast(
    this, 
    0, 
    locationIntent, 
    PendingIntent.FLAG_UPDATE_CURRENT); 
mFusedLocationProviderApi.requestLocationUpdates(
    mClient, 
    mLocationRequest, 
    mLocationPendingIntent); 

И я прошу деятельности, обнаруженные с помощью:

// Set up activity recognition 
Intent activityRecognizedIntent = new Intent(
    this, 
    ActivityRecognizedReceiver.class); 
mActivityRecognizedPendingIntent = PendingIntent.getBroadcast(
    this, 
    0, 
    activityRecognizedIntent, 
    PendingIntent.FLAG_UPDATE_CURRENT); 
mActivityRecognitionApi.requestActivityUpdates(
    mClient, 
    ACTIVITY_DETECTION_INTERVAL, 
    mActivityRecognizedPendingIntent); 

Когда служба погибают от операционной системы, например, когда я нажмите новую версию приложения на свой телефон, ActivityRecognizedReceiver продолжает получать обновления! Как я могу остановить это? Почему LocationReceiver останавливает, получая обновления?

ответ

0

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

если вы хотите остановить его программно

в методе OnPause перестать получать обновления

и в методе onResume снова начать получать обновления.

+0

Там нет OnPause или onResume методы в сфере услуг. –

+0

Использование Служб для неограниченной возможности исполнения, если вы не остановите его сами, тогда он будет продолжать работать. Вы можете остановить его, используя stopself или restervice. –

+0

Найдите точку в своем коде, где будет удобно останавливать службу. –

1

Вы должны удалить запрос на обновление местоположения, например:

LocationServices.FusedLocationApi.removeLocationUpdates(mGoogleApiClient, 
        getPendingIntent(context)); 
+0

Большое спасибо, я попытался остановить сам IntentService, не знал, что вам нужно его отменить в GoogleApiClient –

 Смежные вопросы

  • Нет связанных вопросов^_^