android 休眠任务不执行_屏幕关闭的Android Timer / Handler / Thread.sleep()无法正常工作...
我正在开发一个需要经常运行一小段代码(例如,每两秒钟一次)的应用程序.我尝试使用简单的Thread.sleep()(或android.os.SystemClock.sleep())来使其工作,以避免中断,最后我尝试使用Timer和Handler),但是结果是时间程序进入睡眠状态是随机的(或者如果我使用Timer或Handler,则程序根本不会运行,因为当屏幕关闭时系统会丢弃它们的消息),因为系统会
我正在开发一个需要经常运行一小段代码(例如,每两秒钟一次)的应用程序.我尝试使用简单的Thread.sleep()(或android.os.SystemClock.sleep())来使其工作,以避免中断,最后我尝试使用Timer和Handler),但是结果是时间程序进入睡眠状态是随机的(或者如果我使用Timer或Handler,则程序根本不会运行,因为当屏幕关闭时系统会丢弃它们的消息),因为系统会在屏幕关闭时进入深度睡眠模式.
例如,如果我将手机插入充电器或正在播放音乐(避免进入深度睡眠模式),则该代码正确运行,但是当手机不执行任何操作时,时间可能会从两秒钟增加到几分钟睡觉.
有没有其他选择?
如果不是,是否有任何方法可以检测到系统何时进入深度睡眠模式?
解决方法:
为时已晚,但对其他人可能有用.
是的,Timers在深度睡眠模式下不起作用.我认为没有比AlarmManager更好的方法来在深度睡眠模式下定期运行某些东西了.
另外,由于您的频率仅为2秒,我认为您可能必须进行精确的警报(setExact()),因为如果您的要求在紧急情况下,常规警报可能无法更好地为您提供服务.有时甚至setExact可能也无法捕获我观察到的唤醒锁.因此,您必须获取自己的(PARTIAL_ ..)唤醒锁,然后执行操作并释放该锁.
但是是否必须每次必须运行2秒?
如果没有继续使用定时器,则在设备唤醒后,定时器将自动继续工作.
看一下Should I use AlarmManager or Handler?
标签:handler,timer,screen,sleep,android
来源: https://codeday.me/bug/20191123/2065163.html
更多推荐
所有评论(0)