目標: サービスを開始し、接続の準備が整うのを待ってから戻るメソッド。
このコンストラクターは (GPS) サービスを開始します。コンストラクターから戻る前にonServiceConnectedが呼び出されたことを確認する必要があります。
public GPS(Context context) {
Intent intent = new Intent(context, GpsService.class);
context.startService(intent);
context.bindService(intent, this, Context.BIND_AUTO_CREATE);
// Want to wait here for the callback to onServiceConnected before returning.
...
}
public void onServiceConnected(ComponentName className, IBinder service) {
...
}
なんで?私はAndroid Junit Testsを書いていますが、サービスが接続される前に実行されるため、testSomething () メソッドが失敗します。また、コールバックは私ではなく Android 用に作成されているため、従来のスレッド/待機/通知ソリューションを適用することはできません (私は信じています)。
コードは常にチェックし、接続がまだ準備できていない場合は何もしないため、正常に動作する追跡アプリを作成しましたが、Junit テストは別の話です。