Android四大组件之BroadcastReceiver
2014-04-07 23:25
260 查看
BroadcastReceiver--广播接受者,用来接收Android系统的广播,其生命周期只有一个onReceive方法(相对于Activity和Service少多了)。
注册BroadcastReceiver方法有两种:静态注册和动态注册。
BroadcastReceiver类的源码:
静态注册:如果程序关闭后,依然可以接收到广播
BroadcastReceiver的静态注册和Activity,Service在Manifest.XML文件中的注册是一样的。XML文件注册如下:
普通广播,BroadcastReceiver不能使用abortBroadcast方法来拒绝接受。
发送普通广播的代码如下:
有序广播,只发送到优先级较高的BroadcastReceiver对象,然后由优先级高的BroadcastReceiver对象再传播到优先级低的BroadcastReceiver对象,优先级高的BroadcastReceiver可以终止这个广播的发送。
在使用有序广播的时候,我们必须在注册BroadcastReceiver对象的时候设置其优先级,具体如下:
注册BroadcastReceiver方法有两种:静态注册和动态注册。
BroadcastReceiver类的源码:
public class Ser extends BroadcastReceiver{ @Override public void onReceive(Context context, Intent intent) { //这里可以接收广播Intent对象 } }
静态注册:如果程序关闭后,依然可以接收到广播
BroadcastReceiver的静态注册和Activity,Service在Manifest.XML文件中的注册是一样的。XML文件注册如下:
<receiver android:name=".Test"> <intent-filter> <action android:name="android.intent.action.BROADCAST"/> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> </receiver>动态注册:广播的生命周期跟程序的生命周期一样
public class Test extends Activity{ Ser ser=new Ser(); @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.test); } public void register(){ IntentFilter filter = new IntentFilter(); filter.addAction("android.intent.action.BROADCAST");//设置Intent对象的Action registerReceiver(ser,filter);//注册 } public void unRegister(){ super.onDestroy(); unregisterReceiver(ser);//解除注册 } }说完静态注册和动态注册后,再说一下发送广播,发送的广播分为普通广播和有序广播。
普通广播,BroadcastReceiver不能使用abortBroadcast方法来拒绝接受。
发送普通广播的代码如下:
public void send(){ Intent intent = new Intent("android.intent.action.BROADCAST"); intent.putExtra("msg", "hello"); sendBroadcast(intent); }
有序广播,只发送到优先级较高的BroadcastReceiver对象,然后由优先级高的BroadcastReceiver对象再传播到优先级低的BroadcastReceiver对象,优先级高的BroadcastReceiver可以终止这个广播的发送。
在使用有序广播的时候,我们必须在注册BroadcastReceiver对象的时候设置其优先级,具体如下:
<receiver android:name=".Test"> <intent-filter android:priority="10" > <action android:name="android.intent.action.BROADCAST"/> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> </receiver> <receiver android:name=".Ser1"> <intent-filter android:priority="9" > <action android:name="android.intent.action.BROADCAST"/> <category android:name="android.intent.category.DEFAULT" /> </intent-filter> </receiver>然后发送有序广播的代码如下:
public void send(){ Intent intent = new Intent("android.intent.action.BROADCAST"); intent.putExtra("msg", "hello"); sendOrderedBroadcast(intent,null); }有序广播调用abortBroadcast方法后,就可以停止向低优先级的BroadcastReceiver对象发送广播。
相关文章推荐
- android之JNI
- Android Camera 照相和录像
- Android开发团体联系方式管理应用(1)
- 善用Android预定义样式
- 如何发布打包并发布自己的Android应用(APP)
- Android开发学习笔记--基础知识(一)
- Android中滑屏实现----手把手教你如何实现触摸滑屏以及Scroller类详解
- Android中滑屏初探 ---- scrollTo 以及 scrollBy方法使用说明
- Android中内容观察者的使用---- ContentObserver类详解
- Android中Context详解 ---- 你所不知道的Context
- Android中获取应用程序(包)的大小-----PackageManager的使用(二)
- Android中View的绘制流程
- Android中获取应用程序(包)的信息-----PackageManager的使用(一)
- Android点击事件的四种写法
- Android Canvas练习(3)自已绘柱形图(Bar Chart)
- Android_Gradle打多渠道的渠道包
- Android中View绘制流程以及invalidate()等相关方法分析
- Android onDraw画图记录
- adnroid开发环境的搭建
- Android学习之补间动画