我有一个按钮可以播放和停止。按钮工作完美,但是当我播放音乐时,进入其他应用程序的背景,然后返回我的应用程序,如果按下它,我的播放/停止按钮将再次开始播放。这是一个问题,因为我需要再次按下播放按钮(虽然音乐正在播放),然后按停止按钮。 我找到了用onSaveInstanceState()做的方法,但它不能正常工作,问题就在这里我需要按下播放按钮来停止音乐whitch正在后台播放我的代码:
int button_status=1;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.player);
if (savedInstanceState != null) {
button_status = savedInstanceState.getInt("EXTRA_IS_ON");
}}
@Override
public void onSaveInstanceState(Bundle outState) {
outState.putInt("EXTRA_IS_ON", button_status);
super.onSaveInstanceState(outState);
}
public void onClick(View v) {
internetKonekcija = pk.konekcijaPremaInternetu();
if(button_status == 1)//play the service
{
button_status=0;
startService(new Intent(this, Service.class));
}
else//stop the service
{
button_status=1;
stopService(new Intent(this, Service.class));
}
答案 0 :(得分:0)
为什么要在onCreate中检查已保存的状态?在onRestoreInstanceState中检查它。也许有帮助。
实际上,当您转到后台时,您的应用会转到onPause。当app移动到后台时,我真的不相信onSavedInstanceState会触发。
答案 1 :(得分:0)
我建议采用不同的方式:不是试图存储服务是否正在运行的标志,因此可能会出现标志错误,为什么不在需要时查询服务是否正在运行?请参阅此答案,了解有关如何:https://stackoverflow.com/a/5921190/441899
的建议