BroadcastReceiver 的生命周期相对于 Android O 发生了变化

2024-02-15

如果我声明一个BroadcastReceiver通过系统广播的清单文件(例如ACTION_POWER_DISCONNECTED)系统将在每次发送特定广播时调用它,因此 BroadcastReceiver 的生命周期不受限制。

但也有一些广播无法通过清单文件注册。对于这些广播,我们必须调用context.registerReceiver与相应的IntentFilter。假设我创建了一个 BroadcastReceiverBOOT_COMPLETED并打电话context.registerReceiver从此不再打电话unregisterReceiver该接收器是否也永远有效(直到手机重新启动)?

面向 Android O 的应用程序无法再在其清单中注册隐式广播的广播接收器。隐式广播是不专门针对该应用程序的广播。

如果我上面的猜想是正确的,这将是系统更改的一个简单的解决方法(当然你不应该这样做,但这是可能的)。一个也是如此BroadcastReceiver这是在之后注册的BOOT_COMPLETED广播是否与通过清单自动注册的 BroadcastReceiver 具有相同的生命周期(一直持续到下次重新启动)?


假设我创建了一个BroadcastReceiver for BOOT_COMPLETED并打电话context.registerReceiver从此不再打电话unregisterReceiver该接收器是否也永远有效(直到手机重新启动)?

First, BOOT_COMPLETED is 其中一项行动 https://developer.android.com/preview/features/background-broadcasts.html,仍然会像以前一样表现,这意味着“O”中引入的限制与该操作无关。

一旦您的应用程序的进程被系统杀死或系统清除您的应用程序的内存(由于设备内存不足),您的广播注册就会丢失。否则我看不出这个限制将如何带来更好的电池体验。

一个也是如此BroadcastReceiver这是在之后注册的BOOT_COMPLETED广播具有与广播相同的生命周期(保留到下一次重新启动)BroadcastReceiver哪个是通过清单自动注册的?

如果不满足上述情况,即您的应用程序的进程保持活动状态,并且由于内存不足而没有从内存中清除应用程序 - 那么是的。一旦进入缓存状态 https://developer.android.com/guide/topics/processes/process-lifecycle.html(没有活动的Android组件的状态)注册将再次丢失。

This 纳西尔·汗 (Nasir Khan) 的短视频 https://www.youtube.com/watch?v=63pKwVE4Uog会有帮助的。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

BroadcastReceiver 的生命周期相对于 Android O 发生了变化 的相关文章

  • Realm 中的更新语句

    I have VisitingCardPOJO表格 我想更新单个条目说在哪里no 3 VisitingCardPOJO java public class VisitingCardPOJO extends RealmObject Prima
  • Android Room ORM:支持 SQLite 的自定义构建

    我需要使用 SQLite 的自定义构建 基于 sqlite org 版本https sqlite org android doc trunk www index wiki https sqlite org android doc trunk
  • 使用 ActiveAndroid 库存储 HashMap

    我有一堂课 Table name Control public class Control extends Model Column private String name Column private Map
  • 使用 NEON 内在函数除以浮点数

    我当时正在处理四个像素的图像 这是在armv7对于 Android 应用程序 我想分一个float32x4 t向量由另一个向量组成 但其中的数字与大约不同0 7 to 3 85 在我看来 除法的唯一方法是使用右移 但这是针对一个数字2 n
  • Android版本App更新代码

    我读到如果我们想更新Google Play中的应用程序 版本代码应该高于以前的apk文件 我有一个版本代码为 20 且版本名称为 1 0 的应用程序 那么要更新app 应该如何增加版本号呢 应该增加10吗 或者仅仅 1 就足够了 即版本代码
  • Android studio - 如何保存先前活动中选择的数据

    这是我的代码片段 这Textview充当按钮并具有Onclicklistner在他们 当cpu1000时Textview单击它会导致cpu g1000其代码如下所示的类 public class Game 1000 extends AppC
  • 更新到 Kotlin 1.3.30 后出现“未解析的引用:Parcelize”

    我使用 Kotlin 1 3 21 很长时间了kotlin android extensions插件长期处于实验模式 今天我通过升级版本切换到 Kotlin 1 3 30 现在无论我使用什么 Parcelize注释我看到错误 Unresol
  • Android 辅助功能服务检测通知

    我试图让我的应用程序在显示通知时进行检测 我已在设置应用程序中启用它并且onServiceConnected确实接到电话 但是当我创建通知或通过 gmail 应用程序接收电子邮件时 什么也没有发生 onAccessibilityEvent没
  • Monodroid 示例/带有源代码的小部件

    我是一名 NET 开发人员 我对用 C 开发 Android 应用程序感兴趣 并且我得到了 monodroid 是否有任何来源可以让我获得 monodroid 示例应用程序 带有源代码 这将帮助我在 monodroid 中开发应用程序 或者
  • 在 android studio 中找不到 SDK 位置

    我刚刚在 android studio 中导入了我的 eclipse 项目 我一直这么说 Error SDK location not found Define location with sdk dir in the local prop
  • 警报对话框中的 Webview 不显示内容

    我正在开发一个 Android 应用程序 我需要在网络视图和警报对话框上显示一个网站 该站点显示在网络视图中 但不显示在警报对话框中 到目前为止 这是我的代码 WebView WebView myWebView WebView v find
  • 如何将设备屏幕位置转换为发送事件位置?

    我知道关于input tap x yshell 命令 但是 我想了解如何 使用执行单击sendevent命令 我能够通过以下命令实现它 sendevent dev input event5 3 53 X sendevent dev inpu
  • Android Gradle 问题 - Flutter / Dart

    我的 Gradle 同步有问题 我使用 IntelliJ 和 Android Studio 构建 Flutter Dart 应用程序 我添加了 2 个新的依赖项 现在 Gradle 出现了问题 在 Android Studio 中一切正常
  • 将非 Android 项目添加到 Android 项目

    我在 Eclipse 中有三个项目 Base Server 和 AndroidClient Base和Server是Java 1 7项目 而AndroidClient显然是一个android项目 基础项目具有在服务器和 Android 客户
  • Android NDK 支持区域设置吗?

    我真正想做的就是使用格式化日期strftime x 以正确的顺序 在大多数平台上调用setlocale 足够 在 Android 上 我不断收到 美国日期 那么 Android 不支持语言环境吗 No setlocale and strft
  • Jetpack Compose 中复选框中的透明复选标记

    在我的 Compose 应用程序中 我需要创建一个圆形复选框 我已经通过下面的代码实现了这一点 Composable fun CircleCheckBox isChecked Boolean modifier Modifier Modifi
  • 以编程方式向 LinearLayout 添加边框

    我该如何添加以编程方式LinearLayout 的边框 假设我们创建了这个布局 LinearLayout TitleLayout new LinearLayout getApplicationContext TitleLayout setO
  • 在android中从SD卡上传图像到facebook

    我无法从 SD 卡上传 Facebook 上的图像 我使用了下面的代码 但它没有给我错误 但同时它没有上传图像 byte data null try FileInputStream fis new FileInputStream filep
  • 如何在android中安装和使用couch db

    我应该如何在 android 中安装和使用 couch Db 我的意思是本地沙发数据库 我可以在平板电脑和模拟器中使用它 为此我必须遵循哪些步骤 我目前正在开发一个使用它的项目 有两种选择 1 couchbase android 是的 co
  • 如何模拟ARM处理器运行环境并加载Linux内核模块?

    我尝试加载我的vmlinux into gdb并使用 ARM 内核模拟器 但我不明白为什么我会得到Undefined target command sim 这是外壳输出 arm eabi gdb vmlinux GNU gdb GDB 7

随机推荐

  • 使用 odo 将具有多个数据集的巨大 h5 文件合并为一个

    我有许多大型 13GB 大小 h5 文件 每个 h5 文件都有两个用 pandas 创建的数据集 df to hdf name of file to save key 1 table True df to hdf name of file
  • 使用 socket.io 和 sails.js 发送会话特定消息

    我正在尝试使用 sails js 框架实现私人聊天功能 但在尝试向特定用户发送消息时遇到了一些麻烦 目前 我已经通过使用socket io的将消息发送到特定的socket id来实现私人通信 socket socket id emit ev
  • 如何在没有 JQuery 的情况下从 Javascript 发出 JSONP 请求?

    我可以在 JavaScript 中发出跨域 JSONP 请求而不使用 jQuery 或其他外部库吗 我想使用 JavaScript 本身 然后解析数据并使其成为一个对象 以便我可以使用它 我必须使用外部库吗 如果没有 我该怎么办 funct
  • NSNotificationCenter 给出的键盘大小

    我想在从 UISearchBar 调用的键盘上添加accessoryView 由于 UISearchBar 没有实现此属性 因此我刚刚创建了一个工具栏 下列的苹果的文档 https developer apple com library a
  • sklearn.cross_validation 中使用 train_test_split 和 cross_val_score 的区别

    我有一个 20 列的矩阵 最后一列是 0 1 标签 数据的链接是here https www dropbox com s 8v4lomociw1xz0d data so csv dl 0 我正在尝试使用交叉验证在数据集上运行随机森林 我使用
  • 两个同名变量

    In https github com Khan khan exercises blob master khan exercise js https github com Khan khan exercises blob master kh
  • Rails 中控制器和视图中使用的辅助方法

    我知道我可以将辅助方法放入Helper类里面的helperRails 中的文件夹 那么该方法就可以在任何视图中使用 我知道我可以将方法放入ApplicationController类和该方法可以在任何控制器中使用 控制器和视图中经常使用的方
  • Caliburn EventAggregator moq 验证 PublishOnUIThreadAsync 异步方法

    我有一个事件如下 namespace MyProject public class MyEvent public MyEvent int favoriteNumber this FavoriteNumber favoriteNumber p
  • 检测iPhone / iPod的颜色[重复]

    这个问题在这里已经有答案了 可能的重复 检测 iPhone iPod touch 的颜色 https stackoverflow com questions 8463212 detecting color of iphone ipod to
  • 布局动画在第一次运行时不起作用

    我有一个带有项目列表的活动 当您单击某个项目时 我希望该项目的播放控件从屏幕底部向上滑动并变得可见 我已经为滑入和滑出定义了一个动画集 并且它们可以工作 我已经在我的活动中设置了动画监听器 并在项目的单击动画中开始幻灯片 我的问题是 第一次
  • 将以文本形式存储的数字转换为数字?

    如何将以文本形式存储的数字转换为数字 我尝试过设置 ActiveSheet Range H154 NumberFormat General 但这不起作用 我发现唯一有效的方法是使用 文本到列 或单击单元格进行编辑 然后单击 Enter 但我
  • StringLengthAttribute 如何工作?

    使用 Entity Framework 和 ASP NET MVC3 验证模型时 我在使用 StringLengthAttribute 时遇到问题 我的模型基于实体框架实体 该实体具有一个分部类 该分部类使用 MetadataType 属性
  • 用于 REST 轮询的 Akka

    我正在尝试将大型 Scala Akka PlayMini 应用程序与外部 REST API 连接起来 这个想法是定期轮询 基本上每 1 到 10 分钟 根 URL 然后爬取子级 URL 以提取数据 然后将其发送到消息队列 我想出了两种方法来
  • 如何访问具有隔离范围的指令属性?

    我需要访问指令创建的模型 同时我需要在指令中获取属性 JS module directive createControl function compile timeout return scope name Name Dynamically
  • Opencart最低下单价

    我正在尝试在 Catalogue view theme default template checkout confirm tpl 中实现以下代码 div div div class warning Minimum 10 Euro to c
  • 使用 PHP 为移动设备进行令牌身份验证

    我正在编写一个 iPhone 应用程序作为我网站的移动版本 我打算公开一些 REST API 以便应用程序可以更新用户的数据 我不希望用户每次都登录 但我想保存他的令牌 cookie 并在以后的所有请求中重用它 我可以设置一个随机令牌并将其
  • 适用于 8 位 MCU 的更快 16 位乘法算法

    我正在寻找一种比下面的算法更好的算法来将两个整数相乘 你对此有什么好主意吗 MCU AT Tiny 84 85 或类似的 运行此代码的地方没有 mul div 运算符 uint16 t umul16 uint16 t a uint16 t
  • 如何在 Flask 中将 login_required 与类一起使用?

    from flask login import login required from flask restful import Resource login required class MyClass Resource 在主文件中 我调
  • 如何在继承的TextBox中保留Font?

    我使用以下代码来获取未绘制边框的 TextBox public partial class CustomTextBox TextBox public CustomTextBox InitializeComponent SetStyle Co
  • BroadcastReceiver 的生命周期相对于 Android O 发生了变化

    如果我声明一个BroadcastReceiver通过系统广播的清单文件 例如ACTION POWER DISCONNECTED 系统将在每次发送特定广播时调用它 因此 BroadcastReceiver 的生命周期不受限制 但也有一些广播无