我正在开发一个应用程序,我有一个按钮可以播放和停止。按钮工作完美,但是当我播放音乐时,进入其他应用程序的背景,然后返回我的应用程序,如果按下它,我的播放/停止按钮将再次开始播放。这是一个问题,因为我需要再次按下播放按钮(虽然音乐正在播放),然后按停止按钮。有任何想法吗?我的代码是:
boolean isOn = false;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
play=(Button)findViewById(R.id.button1);
play.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
if(isOn) {
stopService(new Intent(this, ServisZaStream.class));
isOn = false;
}else{
startService(new Intent(this, ServisZaStream.class));
isOn = true;
}
});
}
}
答案 0 :(得分:3)
您需要一种方法从应用中获取后台服务的当前状态,并在恢复应用时相应地设置按钮的状态。
这是Android应用生命周期的一部分。当活动发送到后台时,任何未持久存储的内容都可能会丢失。因此,您需要在恢复应用时检索您感兴趣的任何州。
Android以这种方式运行以节省内存和CPU。
答案 1 :(得分:0)
你的应用程序忘记了布尔值,所以你需要借助于它不会忘记布尔值的机制来做这件事。我通常用单例类来做..你可以找到你的应用程序的任何方法或者你也可以在单身人士的帮助下做到......
答案 2 :(得分:0)
当您的应用停止或暂停时,您应该将您的isOn标记存储在Bundle中:
@Override
public void onSaveInstanceState(Bundle outState) {
outState.putBoolean("EXTRA_IS_ON", isOn);
super.onSaveInstanceState(outState);
}
然后在onCreate中检索它:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (savedInstanceState != null) {
isOn = savedInstance.getBoolean("EXTRA_IS_ON");
}
}