android – onPause之后AsyncTasks会发生什么?

前端之家收集整理的这篇文章主要介绍了android – onPause之后AsyncTasks会发生什么?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

在进入下一个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.

如果出于某种原因,您的MediaPlayer对象仍然使用上面的代码运行,则调用AsyncTask.cancel(true)并覆盖void onCancelled(结果结果),然后从您的线程中终止MediaPlayer.请记住,onCancelled只会在doInBackground返回后调用(或者你可以定期检查isCancelled()以查看你的线程上是否有调用cancel()的东西.如果你设置cancel(true)那么我相信它不会等待doInBackground完成,但当然不是那么干净.

原文链接:https://www.f2er.com/android/430502.html

猜你在找的Android相关文章