如何onResume正确

时间:2014-08-21 11:36:30

标签: android onclick onresume onpause

我创建了一个简单的应用程序,它有两个可以播放和停止歌曲的按钮。一切都在发挥作用。

但是我希望它在应用程序启动时暂停播放歌曲,并在应用程序再次启动时恢复播放歌曲。

我试过了:

@Override
protected void onResume() {
    // TODO Auto-generated method stub
    super.onResume();
    mp.start();
}

但是当应用程序第一次启动时,它会自动启动歌曲。当你点击播放,歌曲黑客和应用程序崩溃时,它也会混淆应用程序。

这是onPause和onDestroy:

@Override
protected void onPause() {
    // TODO Auto-generated method stub
    super.onPause();
    mp.pause();
}

@Override
protected void onDestroy() {
    // TODO Auto-generated method stub
    super.onDestroy();
    mp.stop();
    mp.release();
} }

2 个答案:

答案 0 :(得分:3)

onResume()方法检查歌曲是否已播放时,您不应该再次启动它。 所以现在你的onResume变成了

@Override
protected void onResume() {
    // TODO Auto-generated method stub
    super.onResume();
    if (mp != null && mp.getCurrentPosition() > 0) {
        mp.start();
    }
}

这将解决您的崩溃问题。

现在第二部分,你如何从暂停的位置恢复比赛。 根据文档MediaPlayer类有两种方法getCurrentPosition()seekTo(int msec)您可以使用SharedPreferences将currentPosition存储在onPause()方法和onResume()中获取该位置的SharedPreferencesseekTo(int msec)的位置,然后重新开始播放。

答案 1 :(得分:2)

尝试以下代码

@Override
protected void onResume() {
    super.onResume();
    if (mp != null && mp.getCurrentPosition() > 0) {
        mp.start();
    }
}