本文主要记录第一行代码中安卓开发流程总结和个人安卓APP开发中遇到的实战问题解决方案
大纲
广播机制
应用程序可以对自己感兴趣的广播(系统或者别的应用程序发出的)注册,就可以接受到自己关心的广播内容
广播类型
1.标准广播(Normal Broadcasts):完全异步执行,发出后所有接收器同时接收到这条广播,无法截断,效率很高
2.有序广播(Orderd broadcasts):完全同步执行,发出后只有一个接收器接收到这条广播,接收器接收广播逻辑执行完成后广播才会继续传递,因此接收器是有优先级,可被截断
系统广播
Android内置许多系统级别的广播,如手机开机、电量变化、网络变化等
注册广播接收器
两种注册方式:1.在代码中注册(动态注册)和2.在AndroidManifest.xml中注册(静态注册)
代码中注册(动态注册)
1.新建广播接收类A:继承BroadcastReceiver并重写其onReceive方法
2.声明创建IntentFilter对象:用于调用其.addAction()方法添加监听的广播
3.实例化广播接收类A对象B
4.注册广播registerReceiver(B,IntentFilter)
5.取消注册广播unregisterReceiver(B)
6.声明B所需的权限(视监听的广播情况而定)1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31public class MainActivity extends AppCompatActivity {
private IntentFilter intentFilter;
private NetworkChangeReceiver networkChangeReceiver;
protected void onCreate(Bundle savedInstanceState) {
...
//2.声明创建IntentFilter对象
intentFilter=new IntentFilter();
intentFilter.addAction("android.net.conn.CONNECTIVITY_CHANGE");
//3.实例化广播接收类对象
networkChangeReceiver=new NetworkChangeReceiver();
//4.注册广播
registerReceiver(networkChangeReceiver,intentFilter);
}
//1.新建广播接收类
class NetworkChangeReceiver extends BroadcastReceiver{
public void onReceive(Context context, Intent intent){
//接收到广播执行相应逻辑
}
}
protected void onDestroy(){
...
//5.取消注册广播
unregisterReceiver(networkChangeReceiver);
}
}
AndroidManifest.xml中注册(静态注册)
1.类似动态注册新建广播接收类A
2.注册广播
3.添加对应的监听广播
4.添加权限1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19//1.类似动态注册新建广播接收类
public class BootCompleteReceiver extends BroadcastReceiver{
public void onReceive(Context context, Intent intent){
//接收到广播执行相应逻辑
}
}
//2.注册广播
<receiver
android:name=".BootCompleteReceiver"
android:enabled="true"
android:exported="true">
//3.添加对应的监听广播
<intent-filter>
<action android:name="android.intent.action.BOOT_COMPLETED"/>
</intent-filter>
</receiver>
//4.添加权限
<uses-permission anroid:name="android.permission.RECEIVE_BOOT_COMPLETED" />