現在、私はそれと対話する必要があるのでバインド(音楽)サービスが必要です。しかし、私もには、すべてのコンポーネントがそれ自身をバインドしていない場合でも、を停止しないことを願っています。 Android Developer Guideがアクティビティのバインドされたサービスを破棄しない
を言うように
は、「[...]複数のコンポーネントを一度にサービスにバインドすることができ、それらのすべてをバインド解除する場合、サービスが破棄されます。」
ガイドも
を語る「[...]あなたのサービスは、両方の方法を、動作することができます(無期限に実行する)とも結合を可能に開始することができます。」
私のアプリケーションでは、アプリケーションの起動時にサービスが開始されます。 私はカスタム通知で表示されているクローズボタンをユーザがクリックするだけで、このサービスを破壊したいと思っています。現在、私のMainActivityを破壊しているときにも、サービスは停止しています。
私はまた、同様の回答を読んだことがあります。このトピックはStackoverflowとgoogleで見つかったが、私には役に立たなかった。たぶん私は何かを見逃しているが、私はそれを理解できない。
私は今だところ、私は私のサービスを作成したいときは、これはと呼ばれている:
public void createServiceConnection(){
musicConnection = new ServiceConnection(){
@Override
public void onServiceConnected(ComponentName name, IBinder service) {
MusicService.MusicBinder binder = (MusicService.MusicBinder)service;
musicSrv = binder.getService();
attachMusicService();
}
};
}
...ウィッヒはこれを呼び出します。
public void attachMusicService(){
playerFragment.setMusicService(musicSrv);
musicSrv.attach(context); //need this for my listeners, nevermind
bindService(context);
}
...ウィッヒはこれを呼び出します。
public void bindService(Context act){
if(playIntent==null){
playIntent = new Intent(act, MusicService.class);
act.startService(playIntent);
act.bindService(playIntent, musicConnection, Context.BIND_AUTO_CREATE);
}else{
act.startService(playIntent);
act.bindService(playIntent, musicConnection, Context.BIND_AUTO_CREATE);
}
//finished. I can do stuff with my Service here.
}
私は何か誤解しましたか? 私は最初にサービス開始を作成してバインドされているので、サービスが稼働し続けているように感じます。アクティビティも破棄されます。
まず、「自分のコードが正しいかのようだ」と言うと、そうではないことを証明します:) – Wukash
申し訳ありません。私が投稿したコード "を意味します。"問題は、私が質問で示したコードには含まれていませんでした。 –
うん、私はちょうど私が少し微笑んだ:)。それが最も重要な部分であることから、startForegroundを既に呼び出していると確信していました。 – Wukash