因此,最初,我使用服务和 TimerTask 推送需要在我的应用程序中定期发送的 Intent 。阅读 http://developer.android.com/resources/articles/timed-ui-updates.html 上的文章后这似乎是更好的方法。所以,现在,我的服务创建了一个处理程序并在途中发送它。如文章中所述,我的处理程序 postDelayed() 本身,使其有效地无限期运行(直到小部件被删除,在这种情况下我清除处理程序,从而终止执行)。
我的问题是,我知道如果用户需要,服务可以被 Android 占用以获取内存。我的处理程序是我的服务的成员变量。比如说,Android 吃掉了我的服务,然后稍后重新启动它。据我所知,这是我的服务的一个新实例,因此一个新的处理程序将被实例化并在途中发送。现在不是有两个处理程序在运行吗?还是旧的处理程序会被垃圾收集(我认为不会,因为如果它仍然处于 Activity 状态,则必须在其他地方引用它)?或者第一个处理程序是否以某种方式自动关闭?我不想同时运行其中的 8 个。
最佳答案
Handler 是 Thread 的一部分,Thread 是 Process 的一部分。当操作系统终止服务时,它会清除整个进程。
关于android - 服务和处理程序之间的关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7521388/