“自适应电池”是什么,对于应用程序开发者意味着什么?

12

背景

Google在2018年的Google IO大会上宣布了一项名为“自适应电池”的新功能:

https://youtu.be/ogfYd705cRs?t=3562

对于用户来说,这听起来很有前途,但对于开发者来说,在某些情况下可能会带来问题。

问题

他们说这个功能使用人工智能检查哪些应用程序更常用,并且“操作系统会根据您的使用模式进行调整”:

自适应电池使用设备上的机器学习来找出您在接下来的几个小时内将使用哪些应用,以及哪些应用您今天根本不会使用或者要到很晚才会使用。

对我来说,这似乎是“针对后台处理应用的战争”的又一步。

我的发现

由于这非常新,我没有找到任何关于它如何工作以及开发者是否需要担心并更改应用程序的信息。

我只找到了一些用户角度的文章。

问题

  1. “自适应电池”究竟是什么?

  2. 当启用此功能时,开发者应该担心吗?

  3. 哪些应用组件、后台处理类、闹钟、唤醒锁、同步类、后台/前台服务等可能会受到影响?

  4. 如果它确实会影响应用程序的性质,是否有API可以检查它是否已启用,并相应地采取行动?如果有,如何操作?

  5. 它与其他节省电池的机制相比如何?


1
@AndreyTyukin 谢谢。我确信那就是我做的事情。看来是我的错误。 - android developer
1个回答

9
我同意,“自适应电池”听起来令人担忧。这个名为Android P的新版本“将人工智能置于操作系统核心,并专注于智能和简单的体验。”(1)在开发者的博客上,他们引用了:“对于开发者来说,Android P beta提供了一系列利用这些新功能的方法,特别是在增加与您的应用程序的互动方面。”(1)很明显,虽然他们试图使他们的操作系统更好地服务于公众,但他们没有忘记他们的开发者。

最令人担忧的两件事是Adaptive Battery和Background Restrictions的变化。我会尽力回答你的五个问题,但当然,由于Android P处于测试版阶段,还有很多问题需要解决。

1. “自适应电池”究竟是什么?

“在Android P中,我们与DeepMind合作推出了一个名为Adaptive Battery的新功能,它可以优化应用程序使用电池的方式”(1)。Android使用DeepMind对应用程序进行分类,分为“活动”到“稀有”的不同“应用待机桶”。根据应用程序所处的待机桶,它会改变警报、作业、网络和高优先级Firebase Cloud消息的限制。

这些桶分为:活跃 - 表示应用当前正在使用。工作集 - 表示应用经常使用。频繁 - 表示应用经常使用,但不是每天都使用。罕见 - 表示应用不经常使用。显然,这些桶并不明确,因为它们依赖于Android P实施的DeepMind AI。请参阅this link以获取有关桶及其使用方式的更好解释。另外,this link是电源管理限制的附录,也将阐明自适应电池的情况。
他们还说:“如果您的应用程序针对Doze、App Standby和Background Limits进行了优化,自适应电池应该可以在开箱即用时很好地工作。我们建议在每个桶中测试您的应用程序。”
2. 当启用自适应电池时,开发者是否应该担心?
看起来,如果开发者没有计划,可能会有一些担忧。通过查看我上面链接的电源管理附录,最大的变化是作业和警报的延迟时间。但是,看起来如果强制执行作业或警报,则它们将触发。
我认为,对于开发者而言,听从他们优化Doze、App Standby和Background Limits的警告是明智的。如果你不想这么做,我强烈建议至少确保在每个桶中测试你的应用。
3.哪些应用组件可能会受到影响?
因为Android P仍处于测试版阶段,所以这些内容可能会改变。目前,唯一受影响的应用程序组件是:作业、闹钟、网络和Firebase云消息传递。这些组件会根据DeepMind决定它们所在的待机桶而受到不同程度的影响。
另外一点需要注意的是,我提到了后台限制,并打算在这里稍作解释,因为它类似于自适应电池节能的限制功能。后台限制指出正在后台使用电池的应用程序,并允许用户对其进行限制。“当应用程序被限制时,其后台作业、闹钟、服务和网络访问会受到影响。”因此,如果用户认为你的应用程序占用了太多资源,你将被限制,并且似乎就像被放入低优先级待机桶中一样。但是,在Android P API中有一些方法可以检查你的应用程序是否受到限制,这对开发者非常有帮助。

4. 如果确实会影响应用的性质,是否有任何API可以检查是否启用并相应地采取措施?

是的,API中有一些调用可以告诉您当前所在的存储桶以及您的应用程序是否受到限制,就像我之前说的那样。例如,您可以通过调用UsageStatsManager.getAppStandbyBucket()来查找您的应用程序目前所在的存储桶。

此外,有很好的方法可以使用Android Debug Bridge在每个存储桶中测试您的应用程序。只需按照this link进行操作即可。

5. 它与其他节电机制相比如何?

据我所知,这种存储桶节电方式以前从未被实现过。这是一种新的体验。然而,我知道自Android Oreo以来已经提供了后台限制,用户可以看到哪些应用程序正在运行。但是,在Oreo中,用户只能看到哪些应用程序在消耗电池,但无法设置限制。

我发现了一个有趣的例子(这里):“例如,假设您晚上只看Instagram。在这种情况下,Adaptive Battery将学习此行为,并在白天将应用程序保持在睡眠模式,然后在您最有可能使用它时唤醒它。” 这是他们为Android P提供的DeepMind如何将应用程序放入这些待机桶的示例。
总的来说,我认为这对于一直受到电池问题困扰的Android来说是一个好步骤。只要开发人员不向用户发送唤醒锁定、通知或其他不必要的东西,这确实不会对他们的应用程序产生太大影响。但是,这确实使开发人员需要投入更多的工作,例如检查他们所处的桶并相应地采取行动。时间会告诉我们这是否是Android的一个好步骤。 链接 1. (1) - https://android-developers.googleblog.com/2018/05/whats-new-in-android-p-beta.html#androidbeta 的最新内容。 2. (2) - https://developer.android.com/preview/features/power#buckets 功能介绍。 3. (3) - https://developer.android.com/preview/features/power-details 功能详情。 4. (4) - https://www.howtogeek.com/352364/how-android-p-will-increase-battery-life/ Android P 如何延长电池寿命的方法。

1
那么,你说我们不用担心这个问题?我认为警报非常重要,因此它们永远不会受到影响...想象一下一个闹钟应用程序,它不能按时触发闹铃... 它也可能受到影响吗?或者人工智能会理解这是一项重要任务,不会去碰它? - android developer
我同意,肯定应该有一种方法来推送像闹钟这样的东西,如果由于某个桶而延迟两个小时后响起,则它是无用的。他们在电源详细信息的警报部分引用了“如果强制执行警报限制,则所有警报将在预定窗口触发,并运行最多10秒钟。”就我所看到的,这句话意味着API中有一种强制警报的方法,这是一个好消息。我对开发人员唯一的建议是利用他们提供的测试! - cjnash
我明白了。谢谢。 - android developer
“自适应电池”功能是否能够防止应用在屏幕关闭时持续获取位置数据?(我是一个用户,正在尝试各种应用程序记录GPX轨迹) - semitones

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接