【问题标题】:Stop / Play Button in Android appAndroid 应用程序中的停止/播放按钮
【发布时间】:2013-07-03 13:43:33
【问题描述】:

我正在开发一个应用程序,我有一个播放和停止按钮。这些按钮工作得很好,但是当我播放音乐时,进入其他应用程序的后台,然后返回我的应用程序,如果我按下它,我的播放/停止按钮将再次开始播放。这是一个问题,因为我需要再次按下播放按钮(虽然正在播放音乐),然后按下停止按钮。有任何想法吗?我的代码是:

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;
  }


    });

  }  
}

【问题讨论】:

  • 每当您将应用置于后台时,您的应用都会忘记布尔值的状态

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


【解决方案1】:

您需要一种方法从您的应用中获取后台服务的当前状态,并在恢复您的应用时相应地设置您的按钮状态。

这是 Android 应用生命周期的一部分。当活动被发送到后台时,任何未保存到包中的内容都可能丢失。因此,您需要在应用恢复时检索您感兴趣的任何状态。

Android 以这种方式运行以节省内存和 CPU。

【讨论】:

  • 谢谢,我明白你在说什么我是年轻的开发者我还在学习,你有任何例子或链接吗?
【解决方案2】:

当您的应用停止或暂停时,您应该将 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");
    }
}

【讨论】:

  • outState.putString("EXTRA_IS_ON", isOn);错误:Bundle 类型中的 putString(String, String) 方法不适用于参数 (String, boolean)
  • @user2528081 对不起,正确的方法是 putBoolean("EXSTRA_IS_ON", isOn);
【解决方案3】:

您的应用程序忘记了布尔值,因此您需要借助它不会忘记布尔值的机制来执行此操作。我通常使用单例类来执行此操作。您可以为您的应用程序找到任何方法或者你也可以在单例的帮助下做到这一点......

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-04-02
    • 1970-01-01
    • 2018-07-10
    相关资源
    最近更新 更多