Android 2.3.3(API级别8)AsyncTask很奇怪

时间:2013-02-18 12:35:27

标签: android android-asynctask

我有几个活动处理不同的屏幕,其信息是通过AsyncTask异步加载的。

所有数据提取都在doInBackground()中完成 所有UI操作都在onPostExecute()

中完成

在某些情况下,我收到错误:“无法在未调用Looper.prepare()的线程内创建处理程序”

如果我执行Looper.prepare(),如果为此类实例化了一个新活动,它就会崩溃。

这是一种奇怪的行为,我能够找到它发生的原因。具有类似行为的其他屏幕按预期工作。我找不到他们之间的差异。

有没有人有这种行为?

1 个答案:

答案 0 :(得分:1)

“无法在未调用Looper.prepare()的线程内创建处理程序”表示您尝试在UI线程之外调用AsyncTask.execute()

您应该使用AsyncTask遵循的规则很少:

  • 必须在UI线程上创建任务实例。
  • 必须在UI线程上调用
  • execute(Params ...)。

这也意味着您要在Handler方法中创建doInBackground对象。