《第一行代码-Android》学习笔记(六)
2015-02-14 23:28
232 查看
1.全局大喇叭,广播机制
android中的每个应用程序都可以对自己感兴趣的广播进行注册,这样该程序就会只接收到自己所关心的广播内容,这些广播可能是来自于系统的,也可能是来自于其他的应用的。
2.广播的分类:
a) 标准广播:(Normal broadcasts)完全异步执行的广播,在广播发出之后,广播接收器几乎会在同一时间接收到这条广播,因此他们之间没有任何的先后顺序。
i. 优点:效率高
ii. 缺点:无法被截断。
b) 有序广播:(ordered broadcasts)是一种同步执行的广播,同一时刻,只会有一个广播接收器接收到这条广播,这个广播接收器逻辑处理完毕之后,才会轮到下一个。并且可以前面的广播接收器可以截断正在传递的广播。
3.接收系统的广播:
android内置了许多广播:系统开机,电池量变化,时间或者时区改变。。。
4.注册广播:
a) 动态注册:在代码中进行注册
i. 优点:方便自由控制
ii. 缺点:必须要活动启动了才能进行注册
b) 静态注册:在AndroidManifest.xml中注册。
i. 优点:不用活动启动也可以注册
ii. 缺点:自由度不高。
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction("android.net.conn.CONNECTIVITY_CHANGE");
changeReceiver = new NetWorkChangeReceiver();
registerReceiver(changeReceiver, intentFilter);
动态注册广播,一定要记得取消注册才行。
unregisterReceiver(changeReceiver);
5.android识别设备网络情况:
ConnectivityManager connectivityManager=(ConnectivityManager)getSystemService (Context.CONNECTIVITY_SERVICE);
NetworkInfo networkInfo=connectivityManager.getActiveNetworkInfo();
if(networkInfo!=null&&networkInfo.isAvailable()){
Toast.makeText(context, "NET WORK IS AVAILABLE!", 1).show();
}else {
Toast.makeText(context, "Error", 1).show();
}
6.切记不要在广播接收器的onreceiver()方法中添加过多的逻辑或者耗时的操作,否则程序会报错。并且广播接收器也是不允许开启线程的。广播扮演的角色只是传达一个命令的作用。
android中的每个应用程序都可以对自己感兴趣的广播进行注册,这样该程序就会只接收到自己所关心的广播内容,这些广播可能是来自于系统的,也可能是来自于其他的应用的。
2.广播的分类:
a) 标准广播:(Normal broadcasts)完全异步执行的广播,在广播发出之后,广播接收器几乎会在同一时间接收到这条广播,因此他们之间没有任何的先后顺序。
i. 优点:效率高
ii. 缺点:无法被截断。
b) 有序广播:(ordered broadcasts)是一种同步执行的广播,同一时刻,只会有一个广播接收器接收到这条广播,这个广播接收器逻辑处理完毕之后,才会轮到下一个。并且可以前面的广播接收器可以截断正在传递的广播。
3.接收系统的广播:
android内置了许多广播:系统开机,电池量变化,时间或者时区改变。。。
4.注册广播:
a) 动态注册:在代码中进行注册
i. 优点:方便自由控制
ii. 缺点:必须要活动启动了才能进行注册
b) 静态注册:在AndroidManifest.xml中注册。
i. 优点:不用活动启动也可以注册
ii. 缺点:自由度不高。
IntentFilter intentFilter = new IntentFilter();
intentFilter.addAction("android.net.conn.CONNECTIVITY_CHANGE");
changeReceiver = new NetWorkChangeReceiver();
registerReceiver(changeReceiver, intentFilter);
动态注册广播,一定要记得取消注册才行。
unregisterReceiver(changeReceiver);
5.android识别设备网络情况:
ConnectivityManager connectivityManager=(ConnectivityManager)getSystemService (Context.CONNECTIVITY_SERVICE);
NetworkInfo networkInfo=connectivityManager.getActiveNetworkInfo();
if(networkInfo!=null&&networkInfo.isAvailable()){
Toast.makeText(context, "NET WORK IS AVAILABLE!", 1).show();
}else {
Toast.makeText(context, "Error", 1).show();
}
6.切记不要在广播接收器的onreceiver()方法中添加过多的逻辑或者耗时的操作,否则程序会报错。并且广播接收器也是不允许开启线程的。广播扮演的角色只是传达一个命令的作用。
相关文章推荐
- Android 第一行代码(第二版)学习笔记(二)
- 《第一行代码-Android》学习笔记(一)
- 《第一行代码-Android》学习笔记(十八)
- 《第一行代码-Android》学习笔记(二十四)
- 《第一行代码-Android》学习笔记(二十三)
- 《第一行代码-Android》学习笔记(十六)
- 《第一行代码-Android》学习笔记(十五)
- 《第一行代码-Android》学习笔记(二十一)WebView控件总结【修改】
- 《第一行代码-Android》学习笔记(二)
- 《第一行代码-Android》学习笔记(八)
- 《第一行代码-Android》学习笔记(七)
- 《第一行代码-Android》学习笔记(十七)
- 《第一行代码-Android》学习笔记(十二)
- 《第一行代码-Android》学习笔记(五)
- 《第一行代码-Android》学习笔记(二十)
- 《第一行代码-Android》学习笔记(二十二)
- 《第一行代码-Android》学习笔记(十三)
- 《第一行代码-Android》学习笔记(九)
- Android 第一行代码(第二版)学习笔记(一)
- 《第一行代码-Android》学习笔记(二十五)