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进行注册。
接下来是按钮的监听器,用于发送广播。
以上在Manifest文件中进行注册的方法叫做静态注册,静态注册的好处就是程序即使未启动,
我们也能接收到广播。
还有一种方法叫做动态注册,即在代码中完成注册。好处是我们可以自由的控制注册与注销。
灵活性方面有很大的优势。
需要注意的是,动态注册的广播接收器一定要取消注册才行。
通过当前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文件中进行注册的方法叫做静态注册,静态注册的好处就是程序即使未启动,
我们也能接收到广播。
还有一种方法叫做动态注册,即在代码中完成注册。好处是我们可以自由的控制注册与注销。
灵活性方面有很大的优势。
需要注意的是,动态注册的广播接收器一定要取消注册才行。
相关文章推荐
- Android Studio问题&解决办法集合(不定期更新)
- Android Studio实现代码混淆
- Android Studio实现代码混淆
- Android View分区域点击实现方案——1.根据坐标范围
- Android SDK Manager 更新代理配置
- Android中Bitmap,byte[],Drawable相互转化
- 关于Android中Activity之间socket传递的问题
- Android ListView实现上拉到底部的时候自动刷新数据
- Android动态加载基础 ClassLoader工作机制
- Qt for Android环境搭建浅谈
- Android BottomNavigationBar的使用
- Java加密解密工具(适用于JavaSE/JavaEE/Android)
- Android 编码规范
- Android_基础知识掌握
- android listview 执行notifyDataSetChanged 不更新数据的原因
- Android 软键盘弹出时布局内指定内容上移实现及问题解决
- 这家Android培训机构 备受学员关注
- Android进阶学习-一般动画(使用Animation封装特效工具类1)
- Android进阶学习-一般动画(使用Animation封装特效工具类2)
- Android进阶学习-属性动画(使用Animator封装特效工具类1)