我在音乐播放器中使用Service
来处理MediaPlayer
。以下是我在Activity
处理服务的行为:
boolean serviceStarted = false; // I store this in saveInstanstanceState
protected void onResume(){
super.onStart();
// mBound is boolean that is set in onServiceConnected
if(!mBound){
Intent intent = new Intent(getApplicationContext(), MyService.class);
if(!serviceStarted){
startService(intent);
serviceStarted = true;
}
bindService(intent);
}
}
protected onPause(){
super.onPause();
if(mBound){
unbindService(mConnection); // mConnection is my ServiceConnection
mBound = false;
}
}
现在我已经认识到,如果用户从最近使用的应用程序中删除了我的应用程序,则服务不会被终止。但是,由于我认为用户希望(至少)通过从最近使用的应用程序中删除音乐来停止音乐,我想在那里杀死该服务。
因此我已将此添加到Activity
:
boolean orientationChange = false;
public Object onRetainCustomNonConfigurationInstance() {
orientationChange = true;
return super.onRetainCustomNonConfigurationInstance();
}
protected void onDestroy(){
if(!orientationChange){
stopService(new Intent(getApplicationContext(), MyService.class));
}
}
现在可以使用,但由于onRetainCustomNonConfigurationInstance()
已被弃用,我不想保留此内容。但是我也不想在方向改变时杀死服务。
我还有其他什么可能性?
答案 0 :(得分:0)
在您的服务中使用某种情况进行一段时间的循环。 如果要停止服务,请将此条件更改为false。这将阻止您的服务执行代码,操作系统将停止您的服务。