【问题标题】:Battery drain via Google Play Services persists after location services are used in Android在 Android 中使用定位服务后,通过 Google Play 服务消耗的电量仍然存在
【发布时间】:2017-12-06 03:41:25
【问题描述】:

我正在使用 Android 的 locationactivity recognition 功能。用于实时位置跟踪。当前使用最新的ConnectionLess API。我遇到了以下问题:

在启动定位、活动服务后,电池偶尔会开始耗尽。这种行为很奇怪,因为整个排水管都显示在Google Play Services 下。即使应用程序被停止、终止等,消耗仍然存在。令我惊讶的是,即使应用程序被卸载,消耗仍然存在,并且需要几次完全充电才能摆脱这种情况。

我或多或少肯定我的应用程序触发了流失,因为多个设备记录了该问题,并且这些设备来自不同的制造商并跨越多个 Android 操作系统版本。在 ADB shell 中,我发现 com.google.android.gms 永久占用 126% 的 CPU,如下所示:

接下来,我列出了该进程下的所有线程。结果附在下面:

正如所见,有一个线程 CastSocketMulti 正在运行。所有其他线程都在休眠。在castSocketMulti 上没有得到太多信息,除了一些基本信息,比如它与 android 中的投射相关等。我们没有在我们的应用程序中使用任何与投射相关的东西。

之后,终止进程,排水停止。 注意:我发现了同样的问题here,但没有得到答复。

编辑:每次电池耗尽时,如上所述,com.google.android.gms 被列为占用 100%+ CPU 的第一进程和castSocketMulti,该进程的唯一线程处于R 状态

更新:我打开了一个问题here。 请留下一颗星,以便它可以优先考虑

【问题讨论】:

    标签: android google-play-services battery


    【解决方案1】:

    我在 OnePlus 3 上发现了完全相同的东西。我没有 root 并且无法终止进程,但是使用 adb 清除 com.google.android.gms 的缓存会使进程崩溃并缓解几天的问题。

    您使用的是 Android Auto 还是 Android Pay?当我特别使用这两个应用程序时,它似乎更频繁地发生。

    【讨论】:

    • 感谢您的回复。通过 adb 杀死 com.google.android.gms 确实解决了一段时间的问题。但它确实随机返回。另一种停止电池消耗的方法是暂时关闭位置并重新启动手机。对我来说,当我使用我的应用程序的连续位置跟踪功能时会触发此问题。我不使用 Android auto 或 Android pay。无论如何,我已经在这里打开了一个问题:issuetracker.google.com/issues/70411185 请留下一颗星,以便它可以优先考虑。
    • android.stackexchange.com/a/166221/5738Google 定位服务可能存在一个错误,如果关闭“位置历史记录”,则会导致电池使用率过高。我猜谷歌的质量控制很差,并且不会在禁用位置历史记录的情况下测试他们的手机,并且在某些情况下,该过程会在运行状态下挂起。
    【解决方案2】:

    好的,Google 声称已修复此问题,并将此问题标记为“已修复”。详情here

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-03-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-07
      • 2011-05-25
      相关资源
      最近更新 更多