サービスの開始に使用されるインテントに追加された を使用して、リクエストに (つまり、アクティビティから) 結果を返す(IntentService
実際にはWakefulIntentService !) があります。以前に使用しましたが、リクエストの処理中にデバイスがスリープ状態になったり回転したりするとクラッシュすることがわかりました。PendingIntent
ResultReceiver
このサービスの単体テストとして、ServiceTestCase<Service>
クラスを使用しています。ResultReceiver
サービスに渡されたインテントに追加できるため、使用時に問題なく機能しました。ただし、 Activity のメソッドServiceTestCase
は含まれません。createPendingResult
したがって、このサービスをテストするための最良のアプローチは何だろうと思います。ActivityUnitTestCase
単体テストにActivityInstrumentationTestCase2 を使用する必要がありますか? または、より良いアイデアはありますか?
ところで、私は Android Dev を読みました。サービスに関するガイドの章は次のとおりです。
「しかし、サービスが結果を送り返すようにしたい場合、サービスを開始するクライアントはブロードキャスト用の PendingIntent を (getBroadcast() を使用して) 作成し、それをサービスを開始するインテントでサービスに配信できます。サービスは、その後、ブロードキャストを使用して結果を配信できます。」
アクティビティにローカルなブロードキャストを使用するIntentService
ことは、私にはやり過ぎに思えますが、それについて他の人の意見を聞くことができれば幸いです。