Android中SCREEN_OFF之后的线程问题

时间:2010-06-12 21:35:47

标签: android service multithreading timer action

我正在做一个应用程序,它监听服务中的android.intent.action.SCREEN_OFF(如果那个问题),然后它应该等待几秒钟并启动一个动作,我已经尝试了一个计时器计划方法,线程和处理程序postDelay方法,但所有这些似乎都失败了,它们永远不会在设备上执行,似乎它被锁定后被冻结/杀死。它适用于仿真器和连接到USB的设备,但从不使用仅使用电池的设备,这实际上是一个主要场景。

您知道任何解决方案吗?

3 个答案:

答案 0 :(得分:0)

你有可能设置你的手机,以便在插入时,它实际上永远不会锁定或睡眠(它是开发人员设置之一),并想象模拟器的行为方式相同。所以你要么必须覆盖手机的锁定设置,要么改变你的方法。一般规则是当屏幕关闭时,您的活动结束。

答案 1 :(得分:0)

我现在无法测试(目前不在我的Android设备附近),但是......

广播接收器是否会发射?

如果是这样,当你被调用时,你将需要获得一个部分Wake Lock,以便CPU保持清醒直到计时器触发。

答案 2 :(得分:0)

部分唤醒锁保持CPU运行,因此您应该在广播接收器内获取它以进行screen_off,并在完成您所做的任何操作后将其释放。当你插入USB时,CPU会继续为USB连接提供服务(实际上,内核中的usb内容有自己的唤醒锁)。

回答你的另一个问题,是的,甚至是后台线程。一旦每个人都完成了处理screen_off广播,CPU就会关闭,并且在有人重新打开CPU之前你不会再次运行。