【问题标题】:Efficient way to acquire wake lock?获取唤醒锁的有效方法?
【发布时间】:2015-03-25 20:07:19
【问题描述】:

在我的应用程序中,我定期(每 5 分钟)向服务器发送一些数据,为此我使用了IntentServiceIntentService 检查数据,如果数据可用,它会将数据发送到服务器。所以在这里我的问题是,每当服务向服务器发送数据并在网络调用后立即释放它时,我是否需要获取唤醒锁?获取和释放唤醒锁的有效方法是什么。我的最终目标是节省电池。

【问题讨论】:

  • @downvoter 为什么投反对票??
  • 我不是反对者,但您应该添加一些格式良好的代码

标签: android wakelock android-wake-lock


【解决方案1】:

您需要获取唤醒锁。其实比这更复杂:

  1. 向警报管理器注册警报
  2. 注册一个接收器来接收警报(这包含一个唤醒锁)
  3. 在 WakefulIntentService 的接收者委托中

另外看看 WakefulBroadcastReceiver

见:https://stackoverflow.com/a/28396826/281545

【讨论】:

  • 他知道如何获取唤醒锁,但他想知道执行此操作的有效方法,正如他所说“获取和释放唤醒锁的有效方法是什么。我的最终目标是节省电池电量。”不是如何。
  • @ghosttalker:他正在使用意图服务 - 错误 + 他问 所以我的问题是,每当服务向服务器发送数据时,我是否需要每次获取唤醒锁 -回答是 - 但获得服务锁定不会这样做 - 因此我的回答。
【解决方案2】:

如果您使用后台服务将数据发送到服务器,那么为什么需要在这里获取唤醒锁?我认为没有必要这样做。但是如果你想通知用户上传任务完成,那么你最好使用声音池播放一些声音,它会通知用户上传已经完成。

【讨论】:

  • 它是后台任务,无需通知用户...实际上我在论坛(stackoverflow.com/questions/9309044/…)上读到,当手机进入睡眠状态时服务停止......这就是为什么发布这个问题
  • 没有服务永远不会停止。它总是在后台工作
  • 在这个讨论中很好 似乎服务在移动/设备进入睡眠状态时关闭。但是我用了很多次服务,即使设备处于睡眠状态也不会关闭。
  • 我认为这是因为我创建了我的自定义服务,并且我将其设计为它永远不会关闭,除非用户自己关闭服务。因此,您不必使服务具有粘性。
  • 表示您自己制作的服务类。
猜你喜欢
  • 2013-08-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-01-14
  • 1970-01-01
  • 1970-01-01
  • 2012-02-19
  • 1970-01-01
相关资源
最近更新 更多