【问题标题】:Issue with AsyncTaskAsyncTask 的问题
【发布时间】:2014-06-27 18:42:32
【问题描述】:

在我的安卓应用中,有一个SurfaceView。每当用户触摸它时,AsyncTask 就会在SurfaceView 上呈现一个短的(1 秒)动画。我在两种情况下面临强制关闭问题。

  1. 在动画运行时按返回键。
  2. 在街机模式下游戏持续时间为 60 秒。游戏结束时,开始新的活动。如果在游戏结束时,动画仍在运行,而新活动开始,我会收到强制关闭错误消息。

如何检查AsyncTask 是否完整,即动画结束,在后退键按下生效或新活动开始之前?在 while 循环中使用 AsyncTask.getStatus() 会冻结应用程序。或者有没有其他方法可以做到这一点?

【问题讨论】:

  • 在做任何你可以使用 isFinished() 的事情之前,检查 logcat 看看是什么导致这个力关闭
  • AsyncTask 没有 isFinished 方法。我在这里错过了什么?
  • 我指的是 Activity 类的 isFinishing 而不是 Asynctask,无论如何,如果它不是活动的内部类,你就没有它。您可以使用 Activity 的这种方法来检查 Activity 是否还活着

标签: android android-asynctask forceclose


【解决方案1】:

等待它完成的一种方法是 asyncTask.execute().get() ;

有了这个,你的主线程将等待这个完成

【讨论】:

  • 不会阻止用户界面吗?这与从 UI 线程做动画有什么不同吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-06-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多