2 つの Android アプリケーションがあります: App1
withProcess1
とService1
、App2
withProcess2
とService2
。
AppManager
と呼ばれる独立したサービスであるアプリケーションがもう 1 つありますManagerService
。ManagerService
基本的に次の 2 つのことを行います。
- 電話でセンサーを使用するためのリスナーを登録します
- これらのリスナーを使用してデータを取得します。注: データの取得には時間がかかる場合があります。
これで、AIDL が定義されたので、とバインドService1
してバインドできます。との両方がリモート メソッドを呼び出して、 で定義されている登録済みリスナーを要求し、 からリストに保存されている共有センサー データを取得できます。ManagerService
Service2
ManagerService
Service1
Service2
A(...)
ManagerService
ManagerService
からセンサー データを取得Service1
するリモート メソッドを実行している場合、例:A(...)
ManagerService
List A(...) {
// ...
locationManager.requestLocationUpdates(LocationManager.NETWORK_PROVIDER,
0, 0, locationListener);
// ...
return list;
}
private final LocationListener locationListener = new LocationListener() {
public void onLocationChanged(Location location) {
SaveLocationToList(location);
}
}
上記の「request-registration-updateList-getList」プロセスが完了したService2
後にのみ、センサー データのフェッチを要求することをどのように保証できますか?Service1