在进入下一个Activity之前,我有一个AsyncTask.在这个AsyncTask中,我有一个MediaPlayer.
protected void onPause() {
stopProgress();
Log.i(TAG,"onPAUSE");
try {
} finally {
// If we allocated a player,then cleanup after it
if (player != null) {
player.reset();
player.release();
player = null;
Log.d(TAG,"end of player cleanup");
}
}
super.onPause();
}
使用场景:
>单击活动1中的播放按钮
>在播放器加载之前转到活动2(肯定会调用来自onPause的日志信息).
>在活动2中,活动1中的玩家在完成加载时播放.
最佳答案
AsyncTask什么都不应该发生.它将继续运行.但是,这不是在后台运行媒体播放器的好方法(使用服务).您的代码将取消媒体播放器,但根据您在AsyncTask中的内容,它可能仍处于活动状态.您可以通过在任务上调用cancel(boolean mayInterruptIfRunning)来确保杀死AsyncTask.
原文链接:https://www.f2er.com/android/430502.html如果出于某种原因,您的MediaPlayer对象仍然使用上面的代码运行,则调用AsyncTask.cancel(true)并覆盖void onCancelled(结果结果),然后从您的线程中终止MediaPlayer.请记住,onCancelled只会在doInBackground返回后调用(或者你可以定期检查isCancelled()以查看你的线程上是否有调用cancel()的东西.如果你设置cancel(true)那么我相信它不会等待doInBackground完成,但当然不是那么干净.