【问题标题】:Android fail retrofit http call in deep sleep modeAndroid在深度睡眠模式下失败改造http调用
【发布时间】:2018-04-24 14:17:58
【问题描述】:

我有一个 Android 7.0 上的 galaxy tabA 平板电脑,我使用 Retrofit 2 每 15 分钟向我的服务器发送一次 http 调用以记录有关平板电脑的信息。我的平板电脑在屏幕关闭的情况下超过 5 分钟未充电时进入“深度睡眠”模式。
在此深度睡眠模式下,我的所有呼叫都无法到达我的服务器,并且我收到“连接超时错误”。

是否有人对“深度睡眠”模式有更好的了解并在此处解释实现我的行为的最佳方法是什么(每 15 分钟发送一次日志 h24/24)?

有人可以解释这是一个改造错误还是 Android 功能或其他什么?

【问题讨论】:

标签: android kotlin retrofit2


【解决方案1】:

要解决这个问题,你必须使用印象笔记库:https://github.com/evernote/android-job

实际上,“打盹模式”在深度睡眠时阻止访问网络,并定期唤醒以让网络访问打开。
这个库帮助我通过网络捕获那些神圣的周期性窗口以发送我的服务器日志。

只需按照自述文件中的教程配置此功能。

【讨论】:

【解决方案2】:

我认为你应该阅读一下这个

打盹模式 从 Android 6.0(API 级别 23)开始

如果用户将设备不插电并静止一段时间 时间,屏幕关闭,设备进入打盹模式。在打盹模式下, 系统试图通过限制应用程序访问来节省电池电量 网络和 CPU 密集型服务。它还可以防止应用程序 访问网络并推迟他们的工作、同步和标准 警报。

系统会定期退出 Doze 短暂的时间以让应用 完成他们推迟的活动。在此维护窗口期间, 系统运行所有待处理的同步、作业和警报,并允许应用 访问网络。

有关更多信息,请阅读以下内容: Optimizing for Doze and App Standby

因此,当您需要执行发送通知等任务时,您需要唤醒手机...

【讨论】:

  • 最佳做法是不要在需要做某事的时候唤醒手机。最佳做法是等待手机定期退出打盹模式,然后在短时间内执行所有工作以获得最佳电池消耗。这就是 android 工作的用途,参见:github.com/evernote/android-job
猜你喜欢
  • 2015-08-10
  • 2022-11-28
  • 2013-04-30
  • 1970-01-01
  • 2014-02-05
  • 1970-01-01
  • 2014-08-07
  • 2017-09-29
  • 1970-01-01
相关资源
最近更新 更多