Android之广播机制—静态注册

广播机制:
通过当前Activity里加载的布局内的控件绑定监听器,监听器内创建Intent对象,
并给Intent的action标签赋值(一般选择内置标签),
并用当前activity的对象的sendBroadcast方法将这个带有广播的intent对象发送出去。
然后创建广播接收器类,继承自BroadcastReceiver父类,重写其onReceive方法,
在onReceive方法内,写入逻辑代码,也就是接收广播后的
处理方法。然后在Manifest文件里对Receiver进行注册,
Receiver内的action标签必须和刚才发送消息的intent的action标签内容一致。
这样每次动作带有监听器的控件时,广播接收器就能收到其广播,并做出相应处理。

示例代码:

首先在Manifest文件中为Receiver进行注册。
 
	   
            
		 
            
        

接下来是按钮的监听器,用于发送广播。

button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {//监听器的含义就是,点击一次按钮,就发送一次广播。
                //通过显式Intent来传递这个广播。
                //新建intent的同时,给intent的setAction属性赋值。
                //值为标签"Intent.ACTION_EDIT",需要注意的是,标签里的Intent仍然是大写的.
                Intent intent=new Intent(Intent.ACTION_EDIT);
          //然后用当前Activity的sendBroadcast(send是发送的意思)方法将这个带有广播属性的intent发送出去。
          //这个intent广播的标签为ACTION_EDIT,所以能接收这个广播并处理的Receiver的action标签也必须为ACTION_EDIT.
                MainActivity.this.sendBroadcast(intent);

            }
        });
接下来是接收器类,接收器类一般情况下是需要我们自己创建的。

//这是我们创建的广播接收器,他先得继承BroadcastReceiver父类,然后复写其onReceive(这里不带r)方法。
public class Receiver extends BroadcastReceiver {
    @Override
    public void onReceive(Context context,Intent intent){
        //onReceive方法的内容就是接收了广播之后的处理方法。
        Log.d("msg","onReceiver");
    }
}

以上在Manifest文件中进行注册的方法叫做静态注册,静态注册的好处就是程序即使未启动,
我们也能接收到广播。
还有一种方法叫做动态注册,即在代码中完成注册。好处是我们可以自由的控制注册与注销。
灵活性方面有很大的优势。
需要注意的是,动态注册的广播接收器一定要取消注册才行。




你可能感兴趣的:(广播机制)