2016-09-29 10 views
0

IntentServiceの代わりにサービスを使用してアクティビティの更新を処理するようリファクタリングするアプリケーションがあります。現在、requestActivityUpdatesを使用してインテントを収集し、IntentServiceベースのクラスに送信して処理します。サービスを使用してアクティビティの更新をリクエストする - インテントを処理する方法

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

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

IntentServiceにそれを通過することなく、私のサービスクラスに直接pendingIntentを処理する方法はありますか?

答えて

1

PendingIntent.getService()は、IntentServiceと通常のサービスの両方で動作します。ただ、

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

(またはものは何でもあなたのサービスの名前です)と

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

を交換してください。

Context.startService()を呼び出すようなサービス、を開始しますPendingIntentを取得します。

またPendingIntent.getServiceのドキュメントは、()を参照してください。サービスに与えられる開始引数は、意図の余分なものから来ます。

IntentService.onHandleIntent(Intent intent)で受け取った意図は、通常のサービスではonStartCommand(Intent intent, int flags, int startId)で受け取ります。

+0

素晴らしい作品です!ドキュメントが少しクリアされたことを願っています... – MrMagoo

+0

@ T.Barrettよくここに書かれています:-) –

関連する問題