我正在开发一个在给定活动中自动并连续播放 mp3 文件的应用程序。它通过侦听来自 MediaPlayer 的“onCompletion”事件来知道当前 mp3 播放何时完成。
但是,如果我在播放媒体时按后退按钮返回开始显示,显然活动仍在运行。当触发“onCompletion”事件时,它会尝试访问列表活动中的视图并在空指针异常时崩溃。
确定活动不再“活动”并因此能够阻止呼叫播放下一个音频的最佳方法是什么?
我正在开发一个在给定活动中自动并连续播放 mp3 文件的应用程序。它通过侦听来自 MediaPlayer 的“onCompletion”事件来知道当前 mp3 播放何时完成。
但是,如果我在播放媒体时按后退按钮返回开始显示,显然活动仍在运行。当触发“onCompletion”事件时,它会尝试访问列表活动中的视图并在空指针异常时崩溃。
确定活动不再“活动”并因此能够阻止呼叫播放下一个音频的最佳方法是什么?
尝试在 Activity 生命周期方法 onStop 或 onDestroy 中触发它们。查看此文档以获取更多详细信息。
onStop 将在用户单击后退按钮时触发。所以在 onStop 中处理你的事件。
@Override
public void onStop () {
// Do your stuff here
super.onStop()
}
最终,onDestroy 也将被调用,但不一定在单击后退按钮时立即调用。