背景

Google在Google IO 2018上宣布了一种称为“自适应电池”的东西:

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

作为用户,这听起来很有希望,但作为开发人员,在某些情况下这可能是个问题。

问题

他们说,它会通过AI检查哪些应用更经常使用,并且“操作系统会适应您的使用模式”:



在我看来,这可能是“对抗后台处理应用程序”的又一步。

我发现了什么

由于这是非常新的内容,因此我还没有发现它的工作原理,以及开发人员是否应该关注它并需要更改应用程序。

从用户角度来看,只有我发现的是文章。

问题

  • 什么是“自适应电池”?
  • 启用它时,开发人员应该担心吗?
  • 哪些应用程序组件,后台处理类,警报,唤醒锁,同步类,后台/前景服务等...可能会受到影响?
  • 如果确实会影响应用程序的性质,是否有任何API可以检查它是否已启用并采取相应措施?如果是这样,怎么办?
  • 与其他节电机制相比如何?
  • 最佳答案

    我同意,这种“自适应电池”听起来令人担忧。名为Android P的新版Android“将AI置于操作系统的核心,并专注于智能和简单的体验。” (1)在开发人员的博客上,他们引用:“对于开发人员,Android P beta提供了多种利用这些新智能的方法,尤其是在增加与您的应用的互动性方面。” (1)很明显,尽管他们试图使自己的OS更好地面向大众,但他们并没有忘记他们的开发人员。

    Android P最令人关注的两件事是“自适应电池”和“背景限制”更改。我会尽我所能回答您的五个问题,但是当然,随着Android P处于测试阶段,还没有解决所有问题。

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

    “在Android P中,我们与DeepMind合作开发了一项称为“自适应电池”的新功能,该功能可优化应用使用电池的方式”(1)。 Android使用DeepMind的目的是将应用程序分类为不同的“应用程序备用存储桶”,其范围从“ Activity ”到“稀有”。根据应用程序放入哪个备用存储桶,它将改变对警报,作业,网络和高优先级Firebase Cloud消息的限制。

    这些存储桶包括: Activity -表示当前正在使用该应用程序。工作集–表示该应用已在正常使用。频繁-意味着该应用经常使用,但并非每天都在使用。稀有-表示该应用程序不经常使用。显然,这些存储桶并不明确,因为它们依赖于Android P正在实现的DeepMind AI。请关注this link,以了解有关什么是存储桶以及如何使用这些存储桶的更好的解释。另外,this link是电源管理限制的附录,这也将阐明自适应电池。

    他们还说:“如果您的应用针对打ze睡,应用待机和背景限制进行了优化,那么开箱即用的自适应电池应该可以很好地为您工作。我们建议在四个存储桶中的每个存储桶中测试您的应用程序。”

    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)中,用户只能看到哪些应用正在消耗电池电量,而无法设置限制。

    我发现了一个有趣的示例here:“例如,假设您真的只在晚上看Instagram。在这种情况下,自适应电池将学习这种行为并将白天的应用保持在 sleep 模式,然后在您最有可能使用它时将其唤醒。”这是他们为Android P提供的一个示例,说明DeepMind如何将应用程序放入这些备用存储桶中。

    总的来说,我确实认为这对Android来说是迈出的重要一步,Android一直受到电池问题的困扰。只要开发人员不向用户发送唤醒锁,通知或其他不必要的垃圾邮件,这实际上就不会对他们的应用造成太大影响。但是,这样做确实使开发人员不得不进行更多工作,例如检查他们所在的存储桶并采取相应的措施。时间会证明这是否是Android的好一步。

    链接

  • (1)-https://android-developers.googleblog.com/2018/05/whats-new-in-android-p-beta.html#androidbeta
  • (2)-https://developer.android.com/preview/features/power#buckets
  • (3)-https://developer.android.com/preview/features/power-details
  • (4)-https://www.howtogeek.com/352364/how-android-p-will-increase-battery-life/
  • 10-07 20:05
    查看更多