Android之广播机制—静态注册

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

示例代码:

首先在Manifest文件中为Receiver进行注册。
</pre><pre name="code" class="html"><!--为创建的广播接收器类进行注册,引用接收器类的地址,和activity的引用方式一样--> <receiver android:name=".Receiver">   <!--intent-filter内的action标签写上和我们发送广播的intent的标签相同,这样这个接收器就能            够接收我们按钮所发出的广播了。如果标签不同,就不会接收,也不会创建广播接收器的对象实例。-->            <intent-filter> <action android:name="android.intent.action.EDIT"/>            </intent-filter>        </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文件中进行注册的方法叫做静态注册,静态注册的好处就是程序即使未启动,
我们也能接收到广播。
还有一种方法叫做动态注册,即在代码中完成注册。好处是我们可以自由的控制注册与注销。
灵活性方面有很大的优势。
需要注意的是,动态注册的广播接收器一定要取消注册才行。




0 0