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

时间:2012-01-27 06:25:35

标签: android handlers airplane

我正在开发一个Android应用程序,我想减少功耗。我相信的方法是每当用户活动停止一定的阈值时间时将手机置于睡眠模式。关于此,我有三个问题。

  1. 如果我发布了wakeLock并且没有其他应用程序在手机进入睡眠状态后多长时间拿着wakeLock?

  2. 我在运行sendMessageDelayed()函数的地方运行了多个HandlerThreads。即使在手机进入睡眠模式后,这些消息是否会被传送?

  3. 将手机置于飞行模式可以节省更多电量,而不仅仅是让手机进入睡眠状态。如果是,那么为什么呢,因为这两种模式的唯一区别就是使用蜂窝网络。

1 个答案:

答案 0 :(得分:3)

  

如果我发布了wakeLock并且没有其他应用程序持有   唤醒之后手机会睡多久?

确实没有明确的答案,但是,根据个人经验,我会说它可能会在30秒到1分钟内发生。

  

我在运行的地方运行了多个HandlerThreads   sendMessageDelayed()函数。这些消息是否会得到传递   手机进入睡眠模式后?

我真的不会指望它,因为我从未见过任何说它会唤醒设备发送消息的东西。你可以随时测试它,但我不相信它可以工作,因为文档没有声称它会。

  

将手机置于飞行模式可以节省更多电量而不是   只是让手机入睡如果是,那么为什么呢?   这两种模式的区别仅在于使用蜂窝网络。

如果您将其置于睡眠模式和飞行模式,那么您将比JUST睡眠模式节省更多电量。

原因是即使CPU几乎睡着了,手机也必须与蜂窝网络保持连接,以便知道您是否收到短信或电话。为此,必须使用电池持续打开天线。如果你将它置于飞行模式,它基本上会关闭天线,然后手机就不会使用电池来实现这个功能。