繁体   English   中英

创建一个Android Activity类的对象

[英]Creating an object of Android Activity class

我有一个扩展Activity的类,并且我试图在普通的Java类中创建该类的对象,但这会抛出异常:

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

我究竟做错了什么?

提前致谢。

您应该阅读android应用程序的应用程序基础知识

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

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

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

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

出于性能原因,我曾经尝试在单独的线程中为GUI充气。 那时我没有触摸任何Window,但是在充气时我得到了相同的错误消息,我只是在Thread中运行Looper.prepare(),一切都很好。

Looper运行线程的消息循环。 如果您没有在线程中调用Looper.prepare()(然后是Looper.loop()),则该线程将不会有消息循环,因此不会有接受消息的Handler对象。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM