【问题标题】:Android Doze: will it affect entire application or its processes separately?Android Doze:它会单独影响整个应用程序或其进程吗?
【发布时间】:2017-10-11 18:05:31
【问题描述】:

我需要收集 GPS 数据,将其保存到数据库,然后每分钟将其发送到后端。 我只是想确保打盹模式不会搞砸。

  1. 假设我启动前台服务并在那里实现onLocationChanged 回调。

    我是否必须在前台服务中执行所有这些操作(收集/存储/发送)才能确保 Doze 允许使用 GPS/互联网?

  2. 如果我想在其他地方存储/发送数据,例如在BroadcastReceiver 中,如何确定我的BroadcastReceiver 已准备好处理数据并且没有处于休眠状态?

  3. Android M 中有一个 bug,导致前台服务受 Doze 模式影响: https://stackoverflow.com/a/37869501/3210556

    一种可能的解决方法是在单独的进程中启动前台服务。

    假设应用程序中有一个前台服务,究竟什么不受打瞌睡的影响?

    • 前台服务本身?
    • 与前台服务关联的进程?
    • 整个应用程序?

谢谢。

【问题讨论】:

    标签: android android-service android-6.0-marshmallow android-doze foreground-service


    【解决方案1】:

    如果您的手机进入Doze一切都进入睡眠状态(GPS、警报、互联网等)并在某个时候推迟到维护窗口(取决于用户拥有的 android 版本)。

    如果您的应用需要在特定时间执行某些操作,您可以请求white list 您的应用。您可以查看白名单here 的有效用例,听起来您的案例可能有效

    【讨论】:

    • 前台服务应该让应用退出打盹模式。问题是询问是否将单独的进程视为前台或整个应用程序。
    猜你喜欢
    • 1970-01-01
    • 2016-02-22
    • 2016-10-02
    • 1970-01-01
    • 1970-01-01
    • 2019-04-01
    • 1970-01-01
    • 2020-03-27
    • 1970-01-01
    相关资源
    最近更新 更多