创建Android Activity类的对象

时间:2009-08-01 05:03:49

标签: java android

我有一个扩展Activity的类,我试图在普通的java类中创建该类的对象,但它给我一个例外:

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

我做错了什么?

提前致谢。

2 个答案:

答案 0 :(得分:4)

您应该阅读Android应用的application fundamentals

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

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

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

答案 1 :(得分:1)

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

  

我曾经尝试过夸大图形用户界面   单独的线程表现   原因。我没碰到任何窗口   那一点,但是当我得到膨胀时   我刚刚跑了同样的错误信息   Looper.prepare()在我的主题和所有   很好。

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