2013-02-18 77 views
1

我有几个活动处理不同的屏幕与通过AsyncTask异步加载的信息。 “内螺纹已不叫Looper.prepare无法创建处理程序:Android 2.3.3(API等级8)AsyncTask怪异

所有数据提取的doInBackground() 所有的UI操作都在onPostExecute()

在某些情况下,我得到的错误做完成()“

如果我做了Looper.prepare(),它会崩溃,如果一个新的活动是为这个类实例化的。

这是一个奇怪的行为,我能够找到它发生的原因。具有类似行为的其他屏幕按预期工作。我可以找到它们之间没有区别。

有没有人有这种行为?

+0

请张贴您的代码。 – MrYanDao 2013-02-18 12:35:49

+0

当你在活动之间切换时,你是否取消了你的asynctask(s)?这是一个常见的错误,不要这样做...... – 2013-02-18 12:37:24

+0

MrYanDao,为了保密问题我不能发布代码。 – TheBigCheese 2013-02-18 12:39:09

回答

1

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

有您应该遵循使用AsyncTask一些规则:

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

此外,它可能意味着比你创建内部doInBackground方法Handler对象。