首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

当应用程序被终止时,广播接收器未在Oreo上侦听

是指在Android 8.0(Oreo)及更高版本中,应用程序在后台运行时,系统对广播的限制更加严格,如果应用程序被终止(即不再处于活动状态),广播接收器将无法接收到广播。

这是由于Android系统为了提高电池寿命和性能优化而引入的后台限制策略。在Oreo版本之前,应用程序可以在后台无限制地接收广播,但这也导致了一些应用滥用广播机制,增加了系统资源的消耗。

为了解决这个问题,开发者可以采取以下措施:

  1. 前台服务:将广播接收器与前台服务结合使用。前台服务是一种在通知栏显示持续运行通知的服务,这样即使应用程序处于后台或被终止状态,广播接收器仍然可以正常接收广播。
  2. JobScheduler:使用JobScheduler API来替代广播接收器。JobScheduler是一种用于调度延迟执行任务的API,可以在特定条件下触发任务的执行,而不需要依赖广播。通过使用JobScheduler,可以更好地控制应用程序的后台任务执行。
  3. 后台限制白名单:在应用程序的清单文件中,可以申请后台限制白名单,以便在应用程序被终止时仍然能够接收广播。但是,这个方法需要谨慎使用,因为滥用可能会导致用户对应用程序的不满。

总结起来,当应用程序被终止时,广播接收器未在Oreo上侦听是由于Android系统对后台广播的限制。开发者可以通过使用前台服务、JobScheduler或申请后台限制白名单来解决这个问题。

腾讯云相关产品推荐:

  • 云函数(Serverless):腾讯云云函数是一种事件驱动的无服务器计算服务,可帮助开发者在云端运行代码,无需关心服务器管理和运维,适用于处理后台任务和事件触发。
  • 云服务器(CVM):腾讯云云服务器是一种可弹性伸缩的云计算基础设施,提供高性能、可靠稳定的计算能力,适用于搭建应用程序的后端服务。
  • 云数据库 MySQL版(CDB):腾讯云云数据库 MySQL版是一种高性能、可扩展的关系型数据库服务,提供稳定可靠的数据存储和管理,适用于应用程序的数据存储需求。

更多腾讯云产品信息,请访问腾讯云官方网站:https://cloud.tencent.com/

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

咦,Oreo怎么收不到广播了?

一般是用于在不同应用程序之间。...只不过,在Android8.0,又进一步的增强了限制,除了以下隐式广播外,其他所有隐式广播均无法通过在AndroidManifest.xml中注册监听 // Android 8.0 不限制的隐式广播...,因此广播接收器不太可能严重影响用户体验" /** 软件包被移除 Intent.ACTION_PACKAGE_FULLY_REMOVED */ "保留原因:一些应用可能需要在另一软件包被移除更新其存储的数据..." /** 设备所有者设置、改变或清除发出 DevicePolicyManager.ACTION_DEVICE_OWNER_CHANGED */ "保留原因:此广播发送得不是很频繁;一些应用需要接收它...:安装或移除存储卷或启动初始化时(当可用卷装载)的一部分发送的,因此它们不是很常见,并且通常是在用户的掌控下" /** 短信、WAP PUSH相关 Telephony.Sms.Intents.SMS_RECEIVED_ACTION

1.9K40

Broadcasts详解「建议收藏」

广播在某个特定事件发生被发送,例如,各种系统事件发生(如系统启动或设备开始充电),Android系统就会发送广播。...应用程序也可以发送自定义广播,例如,通知其他应用程序他们关注的事件(如数据下载完成)。 应用程序可以注册广播接收器广播被发送,系统自动将广播传递到已注册接收该广播应用程序。...一般来说,广播可以作为应用程序间、正常用户流之外的消息传递系统。 系统广播 各种系统事件发生,系统会自动发送广播,例如系统进入/退出飞行模式。系统广播被发送给所有注册该广播接收器应用程序。...这些信息可以注册接收广播的任何应用程序读取。有三种方法可以控制谁可以接收你的广播: a、 可以在发送广播指定权限。...b、 在Android4.0及以上系统,发送广播你可以用setPackage(String)指定包名。系统将广播限制为与包名匹配的应用程序集。

77210

Android8.0隐式广播和自定义签名权限

Android官网:Oreo后台执行限制 我们这里主要看对于广播的影响,摘抄一段官网上的介绍: 广播限制 如果应用注册为接收广播,则在每次发送广播,应用的接收器都会消耗资源。...例如,ACTION_PACKAGE_REPLACED 就是一种隐式广播,因为该广播将被发送给所有已注册侦听器,让后者知道设备的某些软件包已被替换。...不过,ACTION_MY_PACKAGE_REPLACED 不是隐式广播,因为不管已为该广播注册侦听器的其他应用有多少,它都会只被发送给软件包已被替换的应用。...需要签名权限的广播不受此限制所限,因为这些广播只会发送到使用相同证书签名的应用,而不是发送到设备的所有应用。...之前,应用已经在清单中为 ACTION_POWER_CONNECTED 注册了一个接收器;当应用接收到该广播,它会检查清理是否必要。

91220

Android8.0隐式广播和自定义签名权限

Android官网:Oreo后台执行限制 我们这里主要看对于广播的影响,摘抄一段官网上的介绍: 广播限制 如果应用注册为接收广播,则在每次发送广播,应用的接收器都会消耗资源。...例如,ACTION_PACKAGE_REPLACED 就是一种隐式广播,因为该广播将被发送给所有已注册侦听器,让后者知道设备的某些软件包已被替换。...不过,ACTION_MY_PACKAGE_REPLACED 不是隐式广播,因为不管已为该广播注册侦听器的其他应用有多少,它都会只被发送给软件包已被替换的应用。...需要签名权限的广播不受此限制所限,因为这些广播只会发送到使用相同证书签名的应用,而不是发送到设备的所有应用。...之前,应用已经在清单中为 ACTION_POWER_CONNECTED 注册了一个接收器;当应用接收到该广播,它会检查清理是否必要。

1.4K00

谷歌大开“吃”戒的产物,Andriod O全球发布

据猜测,正式版命名很有可能是Oreo(奥利奥),谷歌工程师真的是如此钟爱甜食。...②如果服务容易用户注意,请将其设为前台服务。 例如,播放音频的服务始终应为前台服务。...如果服务未在执行容易立即被用户注意到的操作,一般情况下,您都能够使用计划作业。 ④发生网络事件,请使用 FCM 选择性地唤醒您的应用,而不是在后台轮询。 ⑤在应用正常处于前台之前,请推迟后台工作。...3、检查在您应用的清单中定义的广播接收器。 如果您的清单为显式广播声明了接收器,您必须予以替换。...可能的解决方法包括: ①通过调用 Context.registerReceiver() 而不是在清单中声明接收器的方式在运行时创建接收器。 ②使用计划作业检查条件是否会触发隐式广播

89720

17 个必须掌握的 BroadcastReceiver 知识点「建议收藏」

优点: 完全异步, 逻辑可被任何接受者收到广播,效率高 缺点: 接受者不能将处理结果交给下一个接受者, 且无法终止广播. 1.2.2 有序广播 是一种同步执行的广播。...在广播发出之后,同一刻只有一个广播接收器能够收到这条广播消息,其逻辑执行完后该广播接收器才会继续传递。...广播接收器收到广播后,当前广播也可以使用 setResultData 方法将数据传给下一个接收器。...在系统内部特定时间发生,系统广播由系统自动发出。...1.7 本地广播 本地广播机制使得发出的广播只能够在应用程序的内部进行传递,并且广播接收器也只能接受来自本应用程序发出的广播,则安全性得到了提高。

1.5K31

Android端SpyNote恶意软件技术层面深度剖析

一般来说,我们有下列几种方法来为应用程序创建入口点: 1、通过处理MAIN和LAUNCHER类型Intent的启动器Activity; 2、后台运行的服务; 3、广播接收器系统发送应用程序期望的广播调用...此广播接收器是唯一的,因为系统没有其他接收器能够处理SpyNote在即将关闭生成的特定广播。 每当SpyNote服务即将关闭,就会调用该服务的onDestroy方法。...onDestroy方法本身生成一个“RestartSensor”广播。这是特定于此应用程序广播,系统的任何其他应用程序都无法生成。...每当试图关闭以销毁恶意服务,onDestroy方法都会生成“RestartSensor”广播广播接收器然后便会重新启动服务: C2网络通信 SpyNote在窃取到目标用户数据之后,需要将其发送给威胁行为者...目标用户接到来电,电话状态会发生变化,广播接收器也会被触发。

29010

Android O 广播限制

这些状态通常是由于广播引起的:某些广播广播的发送相对频繁,许多应用程序正在通过清单进行监听(因此需要启动以接收它),但是没有足够的RAM来保留所有状态这些应用程序的进程在缓存中进行处理,因此,每次发送广播...隐式广播是一种不专门针对该应用的广播。 例如,ACTION_PACKAGE_REPLACED 就是一种隐式广播,因为该广播将被发送给所有已注册侦听器,让后者知道设备的某些软件包已被替换。...不过,ACTION_MY_PACKAGE_REPLACED 不是隐式广播,因为不管已为该广播注册侦听器的其他应用有多少,它都会只被发送给软件包已被替换的应用。...之前,应用已经在清单中为 ACTION_POWER_CONNECTED 注册了一个接收器;当应用接收到该广播,它会检查清理是否必要。...ACTION_PACKAGE_DATA_CLEARED 仅当用户从“设置”中明确清除其数据才发送,因此广播接收器不太可能严重影响用户体验。

3.7K31

android学习笔记----自定义广播和系统广播

这种广播效率会比较高,同时也是无法截断或修改数据的。这种广播是全局性的,其他的应用程序都可以接受到。...,看到接收方的Toast显示出来了,接收到了广播 有序广播: 是一种同步执行的广播,在广播发出之后,同一刻只会有一个广播接收器能够收到这条广播消息,这个广播接收器中的逻辑执行完毕之后,广播才会继续传递...本地广播: 不管是有序广播无序广播还是系统的广播都是全局性的广播,即发出的广播可以其他任何应用程序接收到,并且我们也可以接受来自于其他任何应用程序广播,这样就很容易引起安全问题,比如我们发送一些携带关键性数据的广播有可能其他应用程序截获...3.发送本地广播会比发送系统全局广播更高效。 系统广播广播接收器可以自由的对自己感兴趣的广播进行注册,这样有相应的广播发出广播接收器就能够接收到该广播,并在内部处理相应的逻辑。...)方法中添加过多的逻辑或进行任何耗时操作,因为在广播接收器中是不允许开启线程的,onReceive()方法进行了较长时间而没有结束,程序就会报错。

1.5K20

Android14 适配之——现有 App 安装到 Android14 手机上需要注意些什么?

动态广播 App 进入缓存态将会入队保存 在 Android14 中,我们使用 Context 上下文注册的动态广播接收器,可以在 App 进入缓存状态,将已发送还未接收的广播放入到一个队列中保存... App 离开缓存状态(比如进入前台),则系统会传递所有已加入队列的广播。某些广播的多个实例可以合并为一个广播。...而在 Manifest 文件中注册的静态广播接收器,则不能进入队列,它们会在 App 从缓存状态中被移除销毁,进行广播传递。 “什么是缓存状态下的 App?...简单理解就是在后台的 App,目前不在前台的进程,因此,如果系统其他地方需要内存,系统可以根据需要自由地终止这些进程。当然终止的顺序是最老未使用的最先终止。 3....Android 旨在让缓存应用在后台运行,并在系统需要内存自动终止它们。

2.9K10

Android四大组件小结

服务是started状态,其生命周期与启动它的组件无关,并且可以在后台无限期运行,即使启动服务的组件已经销毁。...4、broadcast receiver (1)你的应用可以使用它对外部事件进行过滤,只对感兴趣的外部事件(如电话呼入时,或者数据网络可用时)进行接收并做出响应。广播接收器没有用户界面。...(3)两种注册方式的区别: (a)动态注册广播接收器特点是当用来注册的Activity关掉后,广播也就失效了。 (b)静态注册无需担忧广播接收器是否关闭,只要设备是开启状态,广播接收器也是打开着的。...也就是说哪怕app本身未启动,该app订阅的广播在触发也会对它起作用。...2、4大组件的激活 内容提供者的激活:接收到ContentResolver发出的请求后,内容提供者激活。 其它三种组件activity、服务和广播接收器一种叫做Intent的异步消息所激活。

879100

Android四大组件详解

电池电量改变,系统会产生一条广播,接收到这条广播就能在电量低告知用户及时保存进度,等等。...注意:在 activity 结束前,移除广播接收器。 ) 静态注册无需担忧广播接收者是否关闭,只要设备是开启状态,广播接收者也是打开着的。...普通广播是完全异步的,可以在同一刻(逻辑)所有接收者接收到,消息传递的效率比较高,但缺点是:接收者不能将处理结果传递给下一个接收者,并且无法终止广播 Intent 的传播; 有序广播:调用 sendOrderedBroadcast...A 得到广播后,可以往广播里存入数据,广播传给 B ,B可以从广播中得到 A 存入的数据 总结: 广播为有序广播: 优先级高的先接收 同优先级的广播接收器,动态优先于静态 同优先级的同类广播接收器...广播为普通广播: 无视优先级,动态广播接收器优先于静态广播接收器 同优先级的同类广播接收器,静态:先扫描的优先于后扫描的,动态:先注册的优先于后注册的。

3.9K20

Android四大组件详解

(b)bound(绑定):当应用程序组件调用bindService()方法绑定到服务,服务处于bound状态。...服务是started状态,其生命周期与启动它的组件无关,并且可以在后台无限期运行,即使启动服务的组件已经销毁。...4、broadcast receiver (1)你的应用可以使用它对外部事件进行过滤,只对感兴趣的外部事件(如电话呼入时,或者数据网络可用时)进行接收并做出响应。广播接收器没有用户界面。...(3)动态注册广播接收器特点是当用来注册的Activity关掉后,广播也就失效了。静态注册无需担忧广播接收器是否关闭,只要设备是开启状态,广播接收器也是打开着的。...(4)Android还有一套本地广播机制,就是为了解决广播的安全问题,因为系统全局广播可以其他任何程序接收到,一些携带关键性数据的广播就可能其他应用程序截获。

6.5K10

android的四大组件_android sdk是什么

服务是started状态,其生命周期与启动它的组件无关,并且可以在后台无限期运行,即使启动服务的组件已经销毁。...4、broadcast receiver (1)你的应用可以使用它对外部事件进行过滤,只对感兴趣的外部事件(如电话呼入时,或者数据网络可用时)进行接收并做出响应。广播接收器没有用户界面。...(3)动态注册广播接收器特点是当用来注册的Activity关掉后,广播也就失效了。静态注册无需担忧广播接收器是否关闭,只要设备是开启状态,广播接收器也是打开着的。...也就是说哪怕app本身未启动,该app订阅的广播在触发也会对它起作用。...(2)4大组件的激活 内容提供者的激活:接收到ContentResolver发出的请求后,内容提供者激活。而其它三种组件activity、服务和广播接收器一种叫做intent的异步消息所激活。

95720

Android 四大组件之BroadcastReceiver

intent-filter/action ——用于指定此广播接收器将接收的广播类型,本示例中给出的是用于接收网络状态改变发出的广播。...("MY_BROADCAST_ACTION"); //发送广播 sendBroadcast(intent); 注册了的广播接收者中注册 intentFilter 的 action 与上述匹配...使用系统广播,只需在注册广播接收者定义相关的action即可,不需要手动发送广播系统有相关操作时会自动进行系统广播的发送。 ?...发送广播,指定特定广播接收器所在的包名,具体是通过 intent.setPackage(packageName) 指定,这样此广播将只会发送到此包中的 App 内与之相匹配的有效广播接收器中。...使用封装好的 LocalBroadcastManager 类使用方式与全局广播几乎相同,只是注册/取消注册广播接收器和发送广播将参数的 context 变成了 LocalBroadcastManager

1.4K10

Android知识点基础篇(一)

onTerminate()程序终止的时候执行,程序是内核终止以便为其他应用程序释放资源,不会被调用。 onLowMemory()低内存的时候执行。...可以用来释放一些不必要的资源来应对后台程序已经终止,前台应用程序内存还不够的情况。...内存泄漏(Memory leak):一个对象不在使用了,本应该被垃圾回收器(JVM)回收,但是这个对象由于其他正在使用的对象所持有,造成无法回收的结果。   ...例如单例获取了context的引用,传入的是activity的context,在关闭activity,由于单例还持有context的引用导致activity的内存无法回收。...标准广播发出后,所有接收器都能够接收到,并且接收器无法终止或干扰其他接收器接收。而有序广播在发出的同一刻,只会有一个广播接收器能够接受,并且自行决定是否传递给下一个。 9.

55540

Android基础_1 四大基本组件介绍与生命周期

removeStickyBroadcast(intent)主动把它去掉 注意:发送广播的intent参数与Contex.startActivity()启动起来的Intent不同,前者可以多个订阅它的广播接收器调用...,后者只能一个(Activity或service)调用 监听广播Intent步骤: 1>             写一个继承BroadCastReceiver的类,重写onReceive() 方法,广播接收器仅在它执行这个方法处于活跃状态...动态注册广播接收器还有一个特点,就是当用来注册的Activity关掉后,广播也就失效了。静态注册无需担忧广播接收器是否关闭,只要设备是开启状态,广播接收器也是打开着的。...只是对用户不可见,其他地方需要内存它往往系统杀掉 4.Dead——非活动状态       Activity 尚未被启动、已经手动终止,或已经系统回收处于非活动的状态,要手动终止Activity...6.onStop()      Activity新的Activity完全覆盖不可见系统调用 7.onDestroy()      Activity(用户调用finish()或系统由于内存不足)

1.4K30

Android Oreo 常见问题 2.0 | Android 开发者 FAQ Vol.9

在第一期 Android Oreo 8.0 开发者 FAQ 中,我们为了尽快让大家快速了解 Android Oreo 的新特性,以及它与之前版本 Android 的区别,我们针对 Android Oreo...A: 如今,Pixel、Nexus 5X 及 Nexus 6P 的编译版本已经进入了运营商测试阶段,与此同时,我们也预计不久之后能在 Pixel C 和 Nexus Player 同步推出。...Q: 怎么开启 Nexus 5X / 6P 以及 Pixel C 的 “自动打开 Wi-Fi” 功能? ?...这可能是一个问题,用户应该留在您的应用程序中,恢复到全屏 PIP 窗口并点击返回。应用程序必须重新创建后台堆栈才能完成此操作。 Q: Android O 有哪些新特性能够最直接用于开发?...compileSdkVersion、buildToolsVersion、targetSdkVersion 和 Support Library 版本修改到对应的版本,接下来从 Manifest 中移除广播接收器

1.9K70

B4A编程开发路线001_Android安卓基础

广播接收器(Broadcast Receivers):用于接收广播。内容提供者(Content Providers): 支持在多个应用中存储和读取数据,相当于数据库。...Android APP(安卓应用程序)不一定四种组件(元件)都有。如果拥有多个活动、广播接收器或者服务,我们可以使用意图(Intents)来启动各组件,建立更复杂的应用程序。...打开一个新的Activity,前一个Activity会被置为暂停(pause)状态,并且压入历史栈中。用户可以通过返回操作退回到以前打开过的Activity。...3、广播接收器(Broadcast Receivers) 在 Android APP中,Broadcast 是一种广泛运用的在应用程序之间传输信息的机制。...总之,Android可以使用广播接收器接收有兴趣的广播,或者送出广播使得其他APP知道当前APP的状态改变。

90770

一文入门Android逆向

只有需要在多个应用程序间共享数据是才需要内容提供者。例如,通讯录数据多个应用程序使用,且必须存储在一个内容提供者中。它的好处是统一数据访问方式。 ContentProvider实现数据共享。...4、Broadcast Receiver 你的应用可以使用它对外部事件进行过滤,只对感兴趣的外部事件(如电话呼入时,或者数据网络可用时)进行接收并做出响应。广播接收器没有用户界面。...一般来说是在状态栏放一个持久的图标,用户可以打开它并获取消息。 广播接收者的注册有两种方法,分别是程序动态注册和AndroidManifest文件中进行静态注册。...动态注册广播接收器特点是当用来注册的Activity关掉后,广播也就失效了。静态注册无需担忧广播接收器是否关闭,只要设备是开启状态,广播接收器也是打开着的。...也就是说哪怕app本身未启动,该app订阅的广播在触发也会对它起作用。

3.1K10
领券