如果Activity / UI在某些(可能很长)时间内处于空闲状态,UI线程将执行的操作

时间:2014-04-17 10:43:27

标签: java android multithreading

我认为标题本身就说明了我的问题......

AFAIK,在Java中,当Thread的工作完成,即run()方法已完成执行时,Thread本身将完成并死亡。

那么,当我的Activity(我的意思是UI)长时间闲置时,UI线程会做什么?它睡了吗?还是做其他工作?

感谢所有......

1 个答案:

答案 0 :(得分:4)

我认为问题不仅仅是关于Java线程,而是关于Android“主线程”(也称为“UI线程”)。

引用Android的JavaDoc Handler

  

为您的应用程序创建进程时,其主要线程是   致力于运行一个负责管理的消息队列   顶级应用程序对象(活动,广播接收器等)   以及他们创造的任何窗户。你可以创建自己的线程,和   通过Handler与主应用程序线程进行通信。   这是通过调用相同的post或sendMessage方法来完成的   之前,但来自你的新线程。给定的Runnable或Message将   然后在Handler的消息队列中安排并处理   合适的。

换句话说:主线程负责从队列中出列消息/ runnable并对其进行处理。当队列为空时,该主线程被阻塞(因为没有任何东西可以做)。如果使用在主线程中创建的Handler ,那么Handler的消息和runnable实际上将被添加到主线程使用的同一队列中。通常,只要进程执行,主线程就会运行。

注意:Android应用程序实际上可以有多个进程,每个进程都有自己的主线程。但是,大多数Android应用程序只有一个进程(因此只有一个主线程)。