您的位置:首页 > 移动开发 > Android开发

《第一行代码-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()方法中添加过多的逻辑或者耗时的操作,否则程序会报错。并且广播接收器也是不允许开启线程的。广播扮演的角色只是传达一个命令的作用。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: