在进入下一个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();
}
Run Code Online (Sandbox Code Playgroud)
使用场景:
AsyncTask 不应该发生任何事情。它将继续运行。然而,这并不是在后台运行媒体播放器的好方法(为此使用服务)。您的代码将取消媒体播放器,但根据您的 AsyncTask 中的内容,它可能仍然处于活动状态。cancel (boolean mayInterruptIfRunning)您可以通过调用任务来确保 AsyncTask 被终止。
如果出于某种原因您的MediaPlayer对象仍在使用上面的代码运行,则调用AsyncTask.cancel(true)并覆盖void onCancelled (Result result),然后MediaPlayer从线程内终止该对象。请记住,onCancelled只会在doInBackground返回后被调用(或者您可以定期检查是否有东西在您的线程上isCancelled()调用。如果您设置了,那么我相信它不会费心等待完成,但当然这不是那么干净。cancel()cancel(true)doInBackground
| 归档时间: |
|
| 查看次数: |
3839 次 |
| 最近记录: |