当手机进入睡眠状态时,Handler.sendMessageDelayed() 方法是否有效?

4

我正在开发一个Android应用程序,希望减少电量消耗。我认为的方法是每当用户活动停止一段特定时间后,将手机置于睡眠模式。关于此,我有以下三个问题:

  1. 如果我释放唤醒锁,并且在没有其他应用程序持有唤醒锁的情况下,手机会在多长时间后进入休眠模式?

  2. 我有多个HandlerThreads在运行,在其中使用sendMessageDelayed()函数。在手机进入睡眠模式后这些消息是否会被传递?

  3. 将手机设置为飞行模式与仅将手机置于睡眠模式相比,哪种方式可以更节省电量?如果是,则原因是什么?因为这两种模式的唯一区别是使用蜂窝网络。

1个回答

3
如果我释放了wakeLock,而且没有其他应用程序持有该wakeLock,在多少时间内手机才会进入睡眠状态呢?
其实没有确切的答案,但从个人经验来看,我认为可能会在30秒到1分钟内发生。
我有多个HandlerThreads正在运行,使用sendMessageDelayed()函数。即使手机进入睡眠模式,这些消息会被传递吗?
我真的不指望它,因为我从来没有见过任何东西说它会唤醒设备以发送所述的消息。您可以随时进行测试,但我不信任其工作,因为文档并未声称它会起作用。
把手机设置为飞行模式比仅将手机设置为睡眠模式节省更多电量吗?如果是,那么为什么,因为这两种模式之间的唯一区别是使用蜂窝网络。
如果你将手机设置为睡眠模式和飞行模式,那么你将比仅睡眠模式节省更多电池电量。
原因是即使CPU基本上处于睡眠状态,手机也必须保持与蜂窝网络的持续连接,以便知道是否收到短信或电话。为此,它必须使用电池不断保持天线开启。如果你把它放到飞行模式,它基本上会关闭天线,然后手机就不会使用电池来进行此功能。

谢谢Jakar。您能否提供一下您回答问题2和问题3的参考资料? - crazyaboutliv
对于问题3,我没有使用参考资料。我只是从逻辑上看 - 如果手机必须保持其他东西的电源,则必须使用更多的电池。对于问题2,关于睡眠模式并没有真正的文档,但我阅读了这个页面,并且它没有提到唤醒设备的任何内容。唯一可靠唤醒设备的方法是使用RTC_WAKEUP设置为BroadcastReceiver的Alarm。 - Reed
好的答案,它解释了为什么在屏幕关闭时sendMessageDelayed()不起作用。 - Albert.Qing

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接