Android O Preview 相关-后台执行限制

Android O 是下一代 android  系统,Android O Developer Preview 计划将为开发者提供针对下一个版本的 Android 系统提升您应用的兼容性和开发应用所需的所有功能。该软件是免费的,只需下载预览版工具使用即可。

附录官网计划预览:https://developer.android.com/preview/overview.html#timeline ,可查看有关该计划的介绍。

有关android O 的一些行为变更官网地址:https://developer.android.com/preview/behavior-changes.html

以下主要介绍一下androd O 中关于后台执行限制变更。

后台执行限制

每当应用程序在后台运行时,它会消耗某些设备的有限资源,如RAM。这可能会影响用户的使用体验,特别是如果用户正在使用资源密集型应用程序,例如玩游戏或观看视频。为了改善用户体验,Android O在后台运行时对应用程序可以执行的操作施加限制。

-OverView

Android系统中的许多应用和服务可以同时运行。例如,用户可以在一个窗口中玩游戏,同时在另一个窗口中浏览网页,在另一应用中播放音乐。一次运行的应用程序越多,系统上的负载就越多。如果其他应用程序或服务在后台运行,则会在系统上增加额外的负载,可能音乐应用程序会突然关闭,这会导致用户体验不佳;

为了降低这些问题的机会,Android O对用户不直接与他们进行交互的应用程序可以执行哪些操作。应用程式有两种限制:

后台服务限制:当应用程序空闲时,使用后台服务有限制。这不适用于对用户更为重要的前台服务。

广播限制:除了有限的例外,应用程序不能使用其清单来注册隐式广播。他们仍然可以在运行时注册这些广播,他们可以使用清单来注册针对他们的应用的明确的广播。

注意:默认情况下,这些限制仅适用于以 Android O 为目标的应用。但是,即使该应用尚未定位到Android O,用户也可以从“设置”界面为任何应用启用这些限制。

在大多数情况下,应用程序可以通过使用 JobScheduler 作业解决这些限制。该方法允许应用程序安排在应用程序没有正常运行时执行工作,但仍然给予系统以不影响用户体验的方式安排这些作业的余地。Android O提供了一些改进JobScheduler,可以更轻松地用计划的作业来替换服务和广播接收器;

-后台服务限制

在后台运行的服务可能会消耗设备资源,这也会导致更用户体验。为了减轻此问题,系统对服务应用了一些限制。

系统区分 前台 和 后台 应用程序。(为了服务限制的目的,背景的定义与内存管理所使用的定义不同;一个应用程序可能在内存管理方面属于后台,但在前台涉及其启动服务的能力。)符合一下条件之一的应用程序会被认为是在前台:

  1有一个可见的活动,无论活动是启动还是暂停。

  2有一个前台服务。

  3另一个前台应用程序通过绑定到其中一个服务或通过使用其内容提供者之一连接到应用程序。如以下处于前台的应用程序:

   ● IME

  ● Wallpaper service

  ● Notification listener

  ● Voice or text service

不符合以上条件,应用程序则被认为是在后台。

注意:这些规则不会以任何方式影响绑定的服务。如果应用程序定义了绑定的服务,则其他组件可以绑定到该服务,无论您的应用程序是否在前台。

当应用程序处于前台时,它可以自由创建和运行前台和后台服务。当应用程序进入后台时,它有一个几分钟的窗口,它仍然允许创建和使用服务。在该窗口的最后,该应用被认为是空闲的。在这个时候,系统会停止应用的后台服务,就像应用程序调用了服务的Service.stopSelf()方法一样。

在许多情况下,您的应用程序可以使用 JobScheduler 作业替换后台服务。例如,CoolPhotoApp 需要检查用户是否收到了来自朋友的共享照片,即使应用程序未在前台运行。以前,该应用程序使用后台服务来检查应用程序的云存储。要迁移到Android O,开发人员可以使用定期启动的计划作业来替换后台服务,定期启动,查询服务器,然后退出。

在Android O之前,创建前台服务的通常方法是创建后台服务,然后将该服务提升到前台。但在Android O  中,系统不允许后台应用创建后台服务。因此,Android O引入了 Context.startForegroundService() 在前台启动新服务的新方法。系统创建服务后,应用程序有五秒钟可以调用该服务的 startForeground() 方法来显示一个用户可见的有关该服务的通知。如果该应用在时间限制内没有 startForeground(),系统将停止该服务并声明该应用为ANR

-广播限制

如果应用程序注册接收广播,则应用程序的接收方在每次发送广播时都会消耗资源。如果太多的应用程序注册以基于系统事件接收广播,触发广播的系统事件可能导致所有这些应用程序快速连续地消耗资源,从而削弱用户体验。为了减轻这个问题,Android 7.0(API 25级)对广播进行了限制,如背景优化所述。Android O使这些限制更加严格。

针对Android O的应用程序不能再在其 manifest 文件中注册隐式广播接收器。一个隐式广播 是没有指定一个专门的应用程序的广播。例如,ACTION_PACKAGE_REPLACED是一个隐式广播,因为它被发送到所有注册的监听器,让他们知道设备上的某些包被替换。然而,ACTION_MY_PACKAGE_REPLACED这不是一个隐含的广播,因为它只发送到包被被替换的应用程序,无论有多少其他应用程序已经注册了该广播的监听器。

应用程序可以继续在其清单中注册显式广播。

应用程序可以Context.registerReceiver()在运行时动态注册接收器进行任何广播,无论是隐式还是显式。

需要签名许可的广播将免除此限制,因为这些广播仅发送到使用相同证书签署的应用程序,而不是设备上的所有应用程序。

在许多情况下,以前注册为隐式广播的应用程序可以通过使用JobScheduler作业获得类似的功能。例如,社交照片应用程序可能需要不时对其数据执行清理,并且在设备连接到充电器时更喜欢这样做。以前,应用程序ACTION_POWER_CONNECTED在其 manifest 文件中注册了一个接收器;当应用程序收到广播时,它会检查是否需要清理。为了迁移应用到Android O,需在应用程序的 manifest 文件中删除该接收器,而应用程序会自己调度,在设备空闲并充电时运行的清理作业。

注意:现在许多隐性广播不受此限制。应用程序可以继续在其manifest 文件中注册这些广播的接收者,无论应用程序的API级别如何。有关免除广播的列表,请参阅隐式广播例外

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,456评论 5 477
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,370评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,337评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,583评论 1 273
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,596评论 5 365
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,572评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,936评论 3 395
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,595评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,850评论 1 297
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,601评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,685评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,371评论 4 318
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,951评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,934评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,167评论 1 259
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 43,636评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,411评论 2 342

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 171,397评论 25 707
  • 前言 谷歌刚刚发布了Android O技术预览版,为了提升续航和减少耗电,Android进一步限制了后台服务的运行...
    客家小罗阅读 7,183评论 1 14
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,585评论 18 139
  • 前言 本文主要针对Android O的适配,文中大部分内容将来自官网,本文只是总结提取出适配需要的注意点,关于An...
    GrayMonkey阅读 4,063评论 0 5
  • 七律 . 秋声 昨夜金风凋碧树,轻烟晓露弄晴空。 寒蝉陌上啼高处,落叶篱前叩短蓬。 稻谷沙沙腾细浪,李桃飒飒竞嫣红...
    不语不问阅读 377评论 0 4