4

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

  1. 如果我释放wakeLock 并且在手机进入睡眠多长时间后没有其他应用程序持有wakeLock?

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

  3. 将手机置于飞行模式是否比让手机进入睡眠模式更省电。如果是,那为什么是因为这两种模式的唯一区别是使用蜂窝网络。

4

1 回答 1

3

如果我释放wakeLock 并且在手机进入睡眠多长时间后没有其他应用程序持有wakeLock?

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

我在使用 sendMessageDelayed() 函数的地方运行了多个 HandlerThreads。即使手机进入睡眠模式,这些消息也会传递吗?

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

将手机置于飞行模式是否比让手机进入睡眠模式更省电。如果是,那为什么是因为这两种模式的唯一区别是使用蜂窝网络。

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

这样做的原因是,即使 CPU 几乎处于休眠状态,手机也必须与蜂窝网络保持持续连接,才能知道您是否收到短信或电话。为此,它必须使用电池来持续保持天线开启。如果您将其置于飞行模式,它基本上会关闭天线,然后手机将不会使用电池来执行该功能。

于 2012-01-27T10:20:00.853 回答