Android四大组件 - 广播机制使用解析

标准广播

是一种完全异步执行的广播,在广播发出后,所有的广播几乎会在同一时刻收到这条广播消息,它们之间没有任何先后顺序可言。它是无法被截断的
 标准广播

有序广播

是一种同步执行的广播,在广播发出后,同一时刻只有一个广播接收器能收到这条广播消息,当这个广播接收器的逻辑执行完毕后,广播才会继续传递。优先级高的广播可以先接到消息,它是可以被截断的,截断后后面的广播接收器将无法接收到广播消息
有序广播

动态注册广播

首先,我们先创建一个广播接收器,新建一个类然后继承自BroadcastReceiver,并重写父类的onReceiver()方法,有广播到来时,onReceiver()方法就会得到执行

class NetworkChangeReceiver extends BroadcastReceiver{

	@Override
	public void onReceive(Context context, Intent intent) {
		
	}
}

当Android手机的网络发生变化时,系统会发出一条值为android.net.conn.CONNECTIVITY_CHANGE的广播。现在,我们想让我们的广播接收器监听这个广播,所以我们创建一个IntenFilter的实例,并给它添加一个值为android.net.conn.CONNECTIVITY_CHANGE的action。然后调用在Activity种调用registerReceiver()对广播接收器进行注册,该方法种传入NetworkChangeReceiver和 IntenFilter实例。这样我们的广播接收器就动态注册完成了。动态注册的广播接收器一定要取消注册,在Activity的onDestroy()方法中调用unregisterReceiver()。

静态注册广播

动态注册广播的缺点就是,必须要在程序启动之后才能接收到广播,因为注册逻辑是写在Activity中的,而静态注册就可以实现不需要启动程序也能接收广播。这里我们接收一条开机广播,同样的,我们需要先创建一个广播接收器

public class BootCompleteReceiver extends BroadcastReceiver {

    @Override
    public void onReceive(Context context, Intent intent) {
        Toast.makeText(context, "Boot Complete", Toast.LENGTH_SHORT).show();
    }
}

静态注册的广播接收器一定要在AndroidManifest.xml文件中注册才可以使用,在文件中的application标签下加上


        

可以看到上面是一个reciver标签,也就是我们需要注册的广播接收器,静态注册的广播接收器都是在AndroidManifest.xml文件下注册的,然后,我们给我们的广播接收器加上开机广播的action


	
		
	

这样我们的广播接收器就完成静态注册了

你可能感兴趣的:(Android学习笔记)