【问题标题】:Creating an object of Android Activity class创建 Android Activity 类的对象
【发布时间】:2009-08-01 05:03:48
【问题描述】:

我有一个扩展 Activity 的类,我试图在普通的 java 类中创建该类的对象,但它抛出了一个异常:

Can't create handler inside thread that has not called looper.prepare

我做错了什么?

提前致谢。

【问题讨论】:

  • 当你懒得发一个详细的问题时,你到底指望别人如何帮助你?

标签: java android


【解决方案1】:

您应该阅读 application fundamentals 的 Android 应用程序

我想不出您需要自己创建活动对象的示例。您应该使用 Context.startActivity() 调用来启动活动。

无论如何,回答您的问题 - 活动实现了一个消息队列(使用处理程序),其中可以将消息发送到活动的运行线程以执行某些任务。这意味着执行 Activity 代码的线程会一直等待这些消息(这些消息的一个示例是用户对您的应用程序 UI 的响应)。为此,您需要使用“循环”(或以某种方式等待)消息的 Looper 线程。为您的应用程序呈现 UI 的应用程序的主线程是一个循环线程。

如果由于某种原因您需要手动创建活动对象,那么您应该重新考虑如何设计您的应用程序。只需使用 startActivity。

【讨论】:

    【解决方案2】:

    处理程序在创建它的任何线程中运行。因此,如果您没有在 UI 线程中创建新类的实例,那么处理程序就不会在 UI 线程中运行,您就会遇到问题。

    我曾经尝试在一个 用于性能的单独线程 原因。我没有触摸任何窗口 那一点,但是当我充气时我得到了 同样的错误信息,我刚刚跑了 Looper.prepare() 在我的线程和所有 很好。

    Looper 运行线程的消息循环。如果你不打电话 Looper.prepare()(然后 Looper.loop())在一个线程中,那个线程 不会有消息循环,所以不能有接受的 Handler 对象 消息。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-21
      • 1970-01-01
      • 2021-01-17
      • 1970-01-01
      • 2015-12-30
      相关资源
      最近更新 更多