2010-06-12 47 views
0

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

你知道这个解决方案吗?

回答

0

我现在不能进行测试(不靠近我此刻的Android设备),但...

是否广播接收器火呢?

如果是这样,当您被调用时,您将需要获取部分Wake Lock,以便CPU保持清醒状态,直到定时器启动。

+0

其实我觉得我在用WakeLock做错了什么。它似乎没有工作,我在screen_off动作发送后获得它,所以实际上系统已经关闭了,这是否是一个原因? – michael 2010-06-13 19:45:20

0

您有机会设置电话机,以便在插入电话机时,它实际上不会锁定或休眠(其开发人员设置之一),并假设仿真程序的行为方式相同。因此您必须覆盖手机的锁定设置或更改您的方法。一般规则是当屏幕关闭时,您的活动结束。

+0

包括后台线程吗? – michael 2010-06-13 09:52:26

0

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

并回答你的其他问题,是的,甚至后台线程。只要每个人都处理完screen_off广播,CPU就会关闭,并且在有人重新启动CPU之前不会再运行。