Skip to content

Commit f74ad21

Browse files
committed
调整BroadcastReceiver全方位解析文章中的细节
1 parent ea9352e commit f74ad21

File tree

1 file changed

+39
-42
lines changed

1 file changed

+39
-42
lines changed

android/basis/broadcastreceiver.md

Lines changed: 39 additions & 42 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,7 @@
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

Comments
 (0)