【问题标题】:Communicating with Server - Android App与服务器通信 - Android 应用
【发布时间】:2017-08-09 06:39:31
【问题描述】:

我有一个 android 应用程序正在上传和下载文件 每 15 分钟我正在使用 AlarmManager setRepeating() 来执行此操作,但它消耗大量电池且效率低下。但我想重组这个应用程序,以便它可以在 Marshmallow 及以上设备上运行。 我读到了 JobSchedulersync adapter ,但挑战是 Doze mode 。根据官方文档

https://developer.android.com/training/monitoring-device-state/doze-standby.html#understand_app_standby

JobScheduler 和 Sync Adapter 在打盹模式下无法工作。

那么,如何让 android 应用程序和服务器每 15 分钟通信一次,即使在打盹模式下也是如此。

谢谢。

【问题讨论】:

  • 只是出于好奇,为什么要求每隔 15m 上传/下载一个文件?有什么需要?
  • 这只是一个内部应用程序,我们正在从设备收集一些信息并从服务器提供一些信息。
  • 如果只是内部的,那么恕我直言,最好像系统一样进行操作,这样您就可以在第 15 分钟或第一时间进行操作。

标签: java android client-server communication android-doze-and-standby


【解决方案1】:

根据Android developer documentsAlarmManager 将继续在棉花糖及以上工作

标准 AlarmManager 警报(包括 setExact() 和 setWindow())被推迟到下一个维护窗口。

  1. 如果您需要设置在打瞌睡时触发的警报,请使用 setAndAllowWhileIdle()setExactAndAllowWhileIdle()
  2. 使用 setAlarmClock() 的警报 set 继续正常触发 - 系统在这些警报触发前不久退出打盹。

【讨论】:

  • 是的,我读过这个,但我想将它切换到作业调度程序。由于唤醒锁定应用程序消耗大量电池。
  • 您在棉花糖设备上尝试过 JobScheduler 吗?我认为棉花糖的 JobScheduler 没有任何问题。可能在 N 个设备中存在一些问题,但在棉花糖中没有。
  • 是的,在 N 上尝试过,但在解雇乔布斯时遇到了一些问题。我的问题是“可以继续使用 AlarmManager 并手动列入白名单吗?” , 无论如何,这个应用程序仅供内部用户使用,不适合所有人。
  • 是的,alarmmanger没有问题,你可以继续使用它
【解决方案2】:

使用 Alarmmanager 并让您的用户为您的应用停用打盹模式(白名单)。

Alarmmanager 不会消耗大量电池。报警事件来自操作系统。

【讨论】:

  • 即使在上述 Marshmallow 的打盹模式下,将应用列入白名单是否也能正常工作?
  • @PrakashBala 是的,在我的应用程序中它可以正常工作
猜你喜欢
  • 1970-01-01
  • 2017-01-04
  • 1970-01-01
  • 1970-01-01
  • 2013-10-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多