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

Android之广播机制—静态注册

2016-04-13 02:48 281 查看
广播机制:

通过当前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文件中进行注册的方法叫做静态注册,静态注册的好处就是程序即使未启动,

我们也能接收到广播。

还有一种方法叫做动态注册,即在代码中完成注册。好处是我们可以自由的控制注册与注销。

灵活性方面有很大的优势。

需要注意的是,动态注册的广播接收器一定要取消注册才行。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: