Android按钮的onSaveInstanceState()

时间:2013-07-03 14:42:39

标签: java android android-intent android-service android-button

我有一个按钮可以播放和停止。按钮工作完美,但是当我播放音乐时,进入其他应用程序的背景,然后返回我的应用程序,如果按下它,我的播放/停止按钮将再次开始播放。这是一个问题,因为我需要再次按下播放按钮(虽然音乐正在播放),然后按停止按钮。 我找到了用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));
    }       

2 个答案:

答案 0 :(得分:0)

为什么要在onCreate中检查已保存的状态?在onRestoreInstanceState中检查它。也许有帮助。

实际上,当您转到后台时,您的应用会转到onPause。当app移动到后台时,我真的不相信onSavedInstanceState会触发。

答案 1 :(得分:0)

我建议采用不同的方式:不是试图存储服务是否正在运行的标志,因此可能会出现标志错误,为什么不在需要时查询服务是否正在运行?请参阅此答案,了解有关如何:https://stackoverflow.com/a/5921190/441899

的建议