) //当此Activity实例化时,会动态将MyBroadcastReceiver注册到系统中 //当此Activity销毁时,动态注册的MyBroadcastReceiver将不再接收到相应的广播。...当再回到此Activity时,是从onCreate方法开始执行。...) 按照Priority属性值从大-小排序; Priority属性相同者,动态注册的广播优先; 特点 接收广播按顺序接收 先接收的广播接收者可以对广播进行截断,即后接收的广播接收者不再接收到此广播...,不能静态注册 //注册应用内广播接收器 //步骤1:实例化BroadcastReceiver子类 & IntentFilter mBroadcastReceiver mBroadcastReceiver...= new mBroadcastReceiver(); IntentFilter intentFilter = new IntentFilter(); //步骤2:实例化LocalBroadcastManager
本篇将手写教大家写出插件化框架,插件化技术是Android高级工程师必备的技术之一,懂其思想,知其原理。本篇专题将由10篇文章来详细的讲解插件化技术,深耕一个技术领域,才能懂得如何更广阔的横向发展。...本专题代码地址 在上一篇文章中,我们实现了,如何启动一个插件,和启动插件内的Activity和Service....本篇文章我们来实现广播插件.广播主要分两种,一种动态广播,一种静态广播. 插件中动态广播的实现: 启动插件中的动态广播其实和启动Activity和Service是一样的流程....,那么它是如何真正的加载静态广播呢?...extends IntentFilter>) intentsField.get(activity); for (IntentFilter filter : intentFilters
实例化BroadcastReceiver子类 & IntentFilter mBroadcastReceiver mBroadcastReceiver = new mBroadcastReceiver...当再回到此Activity时,是从onCreate方法开始执行。...按照Priority属性值从大-小排序; Priority属性相同者,动态注册的广播优先; 特点 接收广播按顺序接收 先接收的广播接收者可以对广播进行截断,即后接收的广播接收者不再接收到此广播;...,不能静态注册 //注册应用内广播接收器 //步骤1:实例化BroadcastReceiver子类 & IntentFilter mBroadcastReceiver mBroadcastReceiver...= new mBroadcastReceiver(); IntentFilter intentFilter = new IntentFilter(); //步骤2:实例化LocalBroadcastManager
在Activity生命周期管理 以及 插件加载机制 中我们详细讲述了插件化过程中对于Activity组件的处理方式,为了实现Activity的插件化我们付出了相当多的努力;那么Android系统的其他组件...回想一下我们日常开发的时候是如何使用BroadcastReceiver的:注册, 发送和接收;因此,要实现BroadcastReceiver的插件化就这三种操作提供支持;接下来我们将一步步完成这个过程。...,我们先讨论一下如何实现动态注册BroadcastReceiver的插件化。...可以把静态广播当作动态广播处理 既然都是广播,它们的功能都是订阅一个特定的消息然后执行某个特定的操作,我们完全可以把插件中的静态广播全部注册为动态广播,这样就解决了静态广播的问题。...至于插件中的动态广播如何实现插件化,这一点交给读者自行完成,希望你在解决这个问题的过程中能够加深对于插件方案的理解 ^ ^ 小节 本文我们介绍了BroadcastReceiver组件的插件化方式,可以看到
有些业务需求是要将动态信息和静态信息拼接起来,开发的时候有时嫌麻烦,就直接通过+号连接字符串了,这是不好的编程习惯,违反App国际化规范。...一般修改语言界面都在比较深的操作中,上述两种方式是修改语言之后直接刷新当前界面,另一种方式是重新从主界面进入,对应的实现方式就是清空之前的堆栈信息,直接跳到主界面,微信中修改语言之后的界面效果也是如此。...|Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(intent); finish(); 为了保证用户设置成功后重新启动应用时,保存的语言依然生效,要对用户的选择语言进行持久化保存...从翻译的角度来看,可以让翻译团队根据所属界面的特殊性来重新翻译,尽量控制在一定字符以内。...如何利用自动化的工具来解放人工操作,如何从看似杂乱无章的内容中寻找出规律,如何改善自己的编程规范,才是真正能从这个过程中学习到的东西。
消息中心( AMS ,即 Activity Manager Service ) ? 原理描述: 1. 广播接收者 通过 Binder 机制在 AMS 注册 2....上面例子中,当此App首次启动时,系统会自动实例化XXXReceiver类,并注册到系统中。...(); //实例化BroadcastReceiver子类 & IntentFilter mBroadcastReceiver mBroadcastReceiver = new mBroadcastReceiver...) ; //调用Context的registerReceiver()方法进行动态注册 registerReceiver(mBroadcastReceiver, intentFilter); }...8、广播中能执行耗时操作吗?
(){ super.onResume(); //实例化BroadcastReceiver子类 & IntentFilter mBroadcastReceiver...//当此Activity销毁时,动态注册的MyBroadcastReceiver将不再接收到相应的广播。...特别注意 动态广播最好在Activity的onResume()注册、onPause()注销。...原因: 对于动态广播,有注册就必然得有注销,否则会导致内存泄露 重复注册、重复注销也不允许 Activity生命周期如下: Activity生命周期的方法是成对出现的: onCreate()...当再回到此Activity时,是从onCreate方法开始执行。
前言 Hi,大家好,又双见面啦,上一期我们讲了如何使用Activity,肯定有不少小伙伴已经创建了属于自己的FirstActivity,那么这一期我们主要为大家介绍第二个重要组件-BroadcastReceiver...默认情况下,广播接收器运行在主线程中,所以,onReceive() 方法不能执行耗时操作,否则会导致 ANR 异常。 5.2 注册广播接收器 广播接收器的注册分为两种:静态注册、动态注册。...属性值从大-小排序,Priority属性相同者,动态注册的广播优先。...(); //2:实例化IntentFilter、设置接收广播的类型 IntentFilter intentFilter = new IntentFilter(); intentFilter.addAction...,回调onReceive(context, intent)中的context返回值是:Activity Context;3.对于应用内广播的动态注册(LocalBroadcastManager方式),回调
(){ super.onResume(); //实例化BroadcastReceiver子类 & IntentFilter mBroadcastReceiver mBroadcastReceiver...(mBroadcastReceiver) //当此Activity实例化时,会动态将MyBroadcastReceiver注册到系统中 //当此Activity销毁时,动态注册的MyBroadcastReceiver...特别注意 动态广播最好在Activity的onResume()注册、onPause()注销。...原因: 对于动态广播,有注册就必然得有注销,否则会导致内存泄露 重复注册、重复注销也不允许 Activity生命周期如下: ?...当再回到此Activity时,是从onCreate方法开始执行。
roadcastReceiver分类 从注册方式上区分:动态注册以及静态注册(显示广播和隐式广播) 从发送方式上区分:无序广播和有序广播 从处理类型上区分:前台广播和后台广播 从运行方式上区分:普通广播和...Sticky广播(已弃用) 从发送者区分:系统广播和自定义广播 BroadcastReceiver作为Android四大组件之一,不像Activity,没有可显示的界面。...IntentFilter(Intent过滤器) 一个 Activity 也可以有多个 IntentFilter,相当于多了几个过滤器,被筛选到的可能就更大了。...> IntentFilter 的匹配规则 action 的匹配规则 action 可以理解为一个组件具备功能、可以进行什么操作。...scheme 就是常见的 URI 格式: ://:/ 参数 含义 说明 scheme 协议类型 最重要,协议类型决定了如何访问数据,比如是本地还是网络
虽然 广播的发送和接受都是通过intent类,但是广播intent完全和 启动activity的intent不同。 BroadcastReceiver是无法看到启动activity的intent的。...启动activity的intent是属于前台用户可以看到的操作,而 Broadcat Intent是后台操作 。通常用户是看不到 的。...注册分为两种 动态和静态;如果发送的广播附带有权限 ,那接受者必须有相应的权限才能接受到 在BroadcastReceiver中一般是用来启动 某个activity或者启动某个服务,不允许执行耗时操作...动态注册: 动态的在代码中定义。...本文中的图 都是从菜鸟扒的
roadcastReceiver分类 从注册方式上区分:动态注册以及静态注册(显示广播和隐式广播) 从发送方式上区分:无序广播和有序广播 从处理类型上区分:前台广播和后台广播 从运行方式上区分:普通广播和...Sticky广播(已弃用) 从发送者区分:系统广播和自定义广播 BroadcastReceiver作为Android四大组件之一,不像Activity,没有可显示的界面。...IntentFilter(Intent过滤器) 一个 Activity 也可以有多个 IntentFilter,相当于多了几个过滤器,被筛选到的可能就更大了。...> IntentFilter 的匹配规则 action 的匹配规则 action 可以理解为一个组件具备功能、可以进行什么操作。...scheme 就是常见的 URI 格式: ://:/ 参数 含义 说明 scheme 协议类型 最重要,协议类型决定了如何访问数据,比如是本地还是网络
values-fr/ strings.xml 其中,英语,/values/strings.xml: 然后,我们就可以在代码中使用R.string.语法来引用字符串资源就行了。...6.获取屏幕分辨率信息,进行动态适配:DisplayMetrics metrics =newDisplayMetrics(); getWindowManager().getDefaultDisplay...Android提供了用户体验主题,为app提供基础操作系统的外观和体验。这些主题可以在manifest文件中被应用于app中。...使activity看起来像对话框: activity android:theme="@android:style/Theme.Dialog"> 使activity有一个透明背景: activity
相对于intent 是一个有效的做某事的请求,一个intentfilter 则用于描述一个activity(或者IntentReceiver)能够操作哪些intent。...一个activity 如果要显示一个人的联系方式时,需要声明一个IntentFilter,这个IntentFilter 要知道怎么去处理VIEW 动作和表示一个人的URI。...系统设置和偏好设置 使用Content Provider对外共享数据的步骤 1>继承ContentProvider类并根据需求重写以下方法: public boolean onCreate();//处理初始化操作.../10 要操作person表的所有记录,可以这样构建/person 2>在AndroidManifest.xml中使用对ContentProvider进行配置注册(内容提供者注册它自己就像网站注册域名...通常用于初始化设置: 1、为Activity设置所要使用的布局文件2、为按钮绑定监听器等静态的设置操作 2.onStart() 当Activity可见、未获得用户焦点、不能交互时,系统会调用
前面分析了Android系统的广播机制,从本质来说,它是一种消息订阅/发布机制。...接下来,我们继续分析Android应用程序是如何注册广播接收器的,以及把广播接收器注册到哪里去的。...在Android的广播机制中,ActivityManagerService扮演着广播中心的角色,负责系统中所有广播的注册和分发操作。...从stickyIntents里面找出与当前注册的IntentFilter匹配的Intent 上面第一步找出了与注册的action相匹配的Intent,然后在这些Intent中再进行精确匹配...+ " was previously registered for user " + rl.userId); } 首先判断当前进程是否还活着;然后从当前系统所有已经动态注册的
onCreate(Bundle)是你初始化活动的地方,而onPause()是你处理用户离开你的活动的地方。...生命周期:在整个的生命周期,从onCreate(Bundle)开始到onDestroy()结束。从onStart()开始到onStop()结束。从onResume()开始到onPause(()结束。...intent-filter> 动态...: receiver = new BroadcastReceiver(); IntentFilter intentFilter = new IntentFilter(); intentFilter.addAction...总结: Android程序员是指从事Android移动应用操作系统、游戏和各种Android平台功能的应用、开发和测试的技术人员。
广播将以与调用相同的方式序列化。sendOrderedBroadcast(Intent, String)....本地广播只能被动态注册,不能静态注册。动态注册或方法时需要用到LocalBroadcastManager。...动态注册一般用于操作特别频繁的广播事件,比如屏幕的锁屏与解锁,电池电量的变化。...); // 动态的注册广播接收者 screenReceiver = new ScreenReceiver(); IntentFilter intentFilter..."); intentFilter.addAction("android.intent.action.SCREEN_OFF"); 一定要记得,动态注册的广播接收器一定要取消注册才行,否则会报错 android.app.IntentReceiverLeaked
Priority属性值从大-小排序; Priority属性相同者,动态注册的广播优先; 特点 接收广播按顺序接收 先接收的广播接收者可以对广播进行截断,即后接收的广播接收者不再接收到此广播; 先接收的广播接收者可以对广播进行修改...,不能静态注册 //注册应用内广播接收器 //步骤1:实例化BroadcastReceiver子类 & IntentFilter mBroadcastReceiver mBroadcastReceiver...= new mBroadcastReceiver(); IntentFilter intentFilter = new IntentFilter(); //步骤2:实例化LocalBroadcastManager...,回调onReceive(context, intent)中的context返回值是:Activity Context; 对于应用内广播的动态注册(LocalBroadcastManager方式),回调...对于应用内广播的动态注册(非LocalBroadcastManager方式),回调onReceive(context, intent)中的context返回值是:Activity Context; 7.
) 按照Priority属性值从大-小排序; Priority属性相同者,动态注册的广播优先; 特点 接收广播按顺序接收 先接收的广播接收者可以对广播进行截断,即后接收的广播接收者不再接收到此广播...,不能静态注册 //注册应用内广播接收器 //步骤1:实例化BroadcastReceiver子类 & IntentFilter mBroadcastReceiver mBroadcastReceiver...= new mBroadcastReceiver(); IntentFilter intentFilter = new IntentFilter(); //步骤2:实例化LocalBroadcastManager...,回调onReceive(context, intent)中的context返回值是:Activity Context; 对于应用内广播的动态注册(LocalBroadcastManager方式),回调...对于应用内广播的动态注册(非LocalBroadcastManager方式),回调onReceive(context, intent)中的context返回值是:Activity Context;
否则无法阻止接收器接收广播 ---- 用代码注册广播接收器 如果在清单文件中配置广播接收器,程序安装后就会自动注册广播接收器,如果想在适当的时候注册广播接收器,在使用完成之后将其注销就需要使用Java代码来操作了...Code package com.turing.base.activity.broadcastDemo; import android.app.Activity; import android.content.IntentFilter...广播的优先级只是对同步处理方式起作用,如果在接收器中使用了异步处理方式,则调用的顺序除了和优先级有关,还和Android系统的线程调用有关。...intentFilter = new IntentFilter(); // 设置屏幕唤醒广播的动作 intentFilter.addAction(Intent.ACTION_SCREEN_ON...registerReceiver(screenOnOffReceiver,intentFilter); } package com.turing.base.activity.broadcastDemo
领取专属 10元无门槛券
手把手带您无忧上云