ローカル サービスにバインドするアクティビティを開発しています (アクティビティの onCreate 内):
bindService(new Intent(this, CommandService.class), svcConn, BIND_AUTO_CREATE);
ライフサイクル メソッドで IBinder を介してメソッドを呼び出せるようにしたいと考えていますが、これらのメソッドの前に onServiceConnected が呼び出されていることを確認できません。接続が確立されるとメソッド呼び出し (コマンド パターン) が実行されるように、ServiceConnection 実装に並べ替えのキューを追加することでこれを処理することを考えています。
私の質問は次のとおりです。
- これはばかげていますか、より良い方法はありますか?:)
- ServiceConnection コールバックの実行に使用されるスレッドの仕様はありますか? さらに言えば、キューのデータ構造の同期について心配する必要はありますか?
編集 - 次のようなもの:
public void onServiceConnected(ComponentName name, IBinder service) {
dispatchService = (DispatchAsync)service;
for(ExecutionTask task : queue){
dispatchService.execute(task.getCommand(), task);
}
}