1

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

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

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

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

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

有没有人有这种行为?

4

1 回答 1

1

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

您应该遵循以下规则AsyncTask

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

这也可能意味着您在方法Handler内创建对象doInBackground

于 2013-02-18T12:40:47.947 回答