2016-09-29 3 views
0

Lassen Sie eine Anwendung, die ich neu strukturiere, einen Dienst anstelle eines IntentService verwenden, um Aktivitätsaktualisierungen zu verarbeiten. Verwenden Sie derzeit requestActivityUpdates, um eine Methode zu verwenden, die die Absicht erfasst und zur Verarbeitung an eine IntentService-basierte Klasse sendet.Verwenden eines Dienstes zum Anfordern von Aktivitätsaktualisierungen - So verarbeiten Sie Intents

ActivityRecognition.ActivityRecognitionApi.requestActivityUpdates(
      mGoogleApiClient, 
      DETECTION_INTERVAL_IN_MILLISECONDS, 
      getActivityDetectionPendingIntent() 
    ).setResultCallback(this); 

UND

private PendingIntent getActivityDetectionPendingIntent() { 
    Intent intent = new Intent(getApplicationContext(), ActivityIntentService.class); 
    return PendingIntent.getService(getApplicationContext(), 0, intent, PendingIntent.FLAG_UPDATE_CURRENT); 
} 

Gibt es eine Möglichkeit, die PendingIntent direkt in meiner Dienstklasse zu verarbeiten, ohne es zum Preis IntentService vorbei?

Antwort

1

PendingIntent.getService() funktioniert für IntentService und regelmäßigen Service. Ersetzen Sie einfach

Intent intent = new Intent(getApplicationContext(), ActivityIntentService.class); 

mit

Intent intent = new Intent(getApplicationContext(), ActivityService.class); 

(oder was auch immer der Name der Service ist).

Siehe auch die Dokumentation für PendingIntent.getService():

eine PendingIntent abrufen, die einen Dienst, wie der Aufruf Context.startService() beginnen. Die Startargumente, die dem Dienst gegeben werden, kommen von den Extras der Absicht.

Die Absicht, die von IntentService.onHandleIntent(Intent intent) empfangen wird, wird in einem regulären Service von onStartCommand(Intent intent, int flags, int startId) empfangen werden.

+0

Funktioniert gut! Wünschte, die Dokumentation wäre etwas übersichtlicher gewesen ... – MrMagoo

+0

@T.Barrett nun ist es hier dokumentiert :-) –

Verwandte Themen