11## 一、 定义
22
33- ` BroadcastReceiver ` (广播接收器),属于Android四大组件之一
4- - 在Android开发中,BroadcastReceiver的应用场景非常多
5-
6- 广播,是一个全局的监听器,属于` Android ` 四大组件之一
4+ - 在Android开发中,BroadcastReceiver的应用场景非常多广播,是一个全局的监听器,属于` Android ` 四大组件之一
75
86> ` Android ` 广播分为两个角色:广播发送者、广播接收者
97
@@ -79,7 +77,7 @@ public class mBroadcastReceiver extends BroadcastReceiver {
7977 // 接收到广播后自动调用该方法
8078 @Override
8179 public void onReceive (Context context , Intent intent ) {
82- // 写入接收广播后的操作
80+ // 写入接收广播后的操作
8381 }
8482}
8583```
@@ -90,38 +88,38 @@ public class mBroadcastReceiver extends BroadcastReceiver {
9088
9189#### 4.2.1 静态注册
9290
93- - 在AndroidManifest.xml里通过** <receive >** 标签声明
91+ - 在AndroidManifest.xml里通过 ** <receive\ >** 标签声明
9492- 属性说明:
9593
9694``` xml
97- <receiver
98- android : enabled =[" true" | " false" ]
99- //此broadcastReceiver能否接收其他App的发出的广播
100- //默认值是由receiver中有无intent-filter决定的:如果有intent-filter,默认值为true,否则为false
101- android : exported =[" true" | " false" ]
102- android : icon =" drawable resource"
103- android : label =" string resource"
104- //继承BroadcastReceiver子类的类名
105- android : name =" .mBroadcastReceiver"
106- //具有相应权限的广播发送者发送的广播才能被此BroadcastReceiver所接收;
107- android : permission =" string"
108- //BroadcastReceiver运行所处的进程
109- //默认为app的进程,可以指定独立的进程
110- //注:Android四大基本组件都可以通过此属性指定自己的独立进程
111- android : process =" string" >
112-
113- //用于指定此广播接收器将接收的广播类型
114- //本示例中给出的是用于接收网络状态改变时发出的广播
115- <intent-filter >
116- <action android : name =" android.net.conn.CONNECTIVITY_CHANGE" />
117- </intent-filter >
95+ <receiver
96+ android : enabled =[" true" | " false" ]
97+ //此broadcastReceiver能否接收其他App的发出的广播
98+ //默认值是由receiver中有无intent-filter决定的:如果有intent-filter,默认值为true,否则为false
99+ android : exported =[" true" | " false" ]
100+ android : icon =" drawable resource"
101+ android : label =" string resource"
102+ //继承BroadcastReceiver子类的类名
103+ android : name =" .mBroadcastReceiver"
104+ //具有相应权限的广播发送者发送的广播才能被此BroadcastReceiver所接收;
105+ android : permission =" string"
106+ //BroadcastReceiver运行所处的进程
107+ //默认为app的进程,可以指定独立的进程
108+ //注:Android四大基本组件都可以通过此属性指定自己的独立进程
109+ android : process =" string" >
110+
111+ //用于指定此广播接收器将接收的广播类型
112+ //本示例中给出的是用于接收网络状态改变时发出的广播
113+ <intent-filter >
114+ <action android : name =" android.net.conn.CONNECTIVITY_CHANGE" />
115+ </intent-filter >
118116</receiver >
119117```
120118
121119- 注册示例
122120
123- ```
124- <receiver
121+ ``` xml
122+ <receiver
125123 //此广播接收者类是mBroadcastReceiver
126124 android : name =" .mBroadcastReceiver" >
127125 //用于接收网络状态改变时发出的广播
@@ -139,31 +137,30 @@ public class mBroadcastReceiver extends BroadcastReceiver {
139137
140138``` Java
141139@Override
142- protected void onResume(){
143- super . onResume();
140+ protected void onResume() {
141+ super . onResume();
144142
145143 // 实例化BroadcastReceiver子类 & IntentFilter
146- mBroadcastReceiver mBroadcastReceiver = new mBroadcastReceiver();
147- IntentFilter intentFilter = new IntentFilter ();
144+ mBroadcastReceiver mBroadcastReceiver = new mBroadcastReceiver();
145+ IntentFilter intentFilter = new IntentFilter ();
148146
149147 // 设置接收广播的类型
150- intentFilter. addAction(android.net.conn. CONNECTIVITY_CHANGE );
148+ intentFilter. addAction(android.net.conn. CONNECTIVITY_CHANGE );
151149
152150 // 调用Context的registerReceiver()方法进行动态注册
153- registerReceiver(mBroadcastReceiver, intentFilter);
154- }
151+ registerReceiver(mBroadcastReceiver, intentFilter);
152+ }
155153
156154
157155// 注册广播后,要在相应位置记得销毁广播
158156// 即在onPause() 中unregisterReceiver(mBroadcastReceiver)
159157// 当此Activity实例化时,会动态将MyBroadcastReceiver注册到系统中
160158// 当此Activity销毁时,动态注册的MyBroadcastReceiver将不再接收到相应的广播。
161- @Override
162- protected void onPause() {
163- super . onPause();
164- // 销毁在onResume()方法中的广播
165- unregisterReceiver(mBroadcastReceiver);
166- }
159+ @Override
160+ protected void onPause() {
161+ super . onPause();
162+ // 销毁在onResume()方法中的广播
163+ unregisterReceiver(mBroadcastReceiver);
167164}
168165```
169166
@@ -308,7 +305,7 @@ sendBroadcast(intent);
308305
309306 3 . 发送广播时指定该广播接收器所在的包名,此广播将只会发送到此包中的App内与之相匹配的有效广播接收器中。
310307
311- > 通过** intent.setPackage(packageName)** 指定报名
308+ > 通过 ** intent.setPackage(packageName)** 指定报名
312309
313310- 具体使用2 - 使用封装好的LocalBroadcastManager类
314311 使用方式上与全局广播几乎相同,只是注册/取消注册广播接收器和发送广播时将参数的context变成了LocalBroadcastManager的单一实例
0 commit comments