Android中的BroadCastReceiver(广播接收者)

来源:互联网 发布:servo guide软件下载 编辑:程序博客网 时间:2024/06/04 18:42

Android中的BroadCastReceiver(广播接受者)应用组件


是什么?
应用组件(生命周期及生命周期方法)
广播接受者对象(用于接受系统或应用发出的广播)


BroadCastReceiver应用场合?


BroadCastReceiver提供类进程内部或进程间一对多数据通讯的一种方式或机制。
例如:


飞行模式?
系统启动?
电量不足?
网路状态?
系统拨号?
.......


当然除了在我们的应用程序中可以接收系统广播还可以发送广播。


BroadCastReceiver应用类型?


1)普通广播
2)有序广播


BroadCastReceiver的编写及注册?
编写(直接或间接继承BroadCastReceiver)
注册(静态注册,动态注册)
   静态注册(AndroidManifest.xml)
   动态注册(java对象的生命周期与activity的生命周期有关);




BroadCastReceiver应用案例?
编写app接收系统启动时的广播。(例如接收到广播以后可以启动service)
编写及静态注册广播接受者
注册时声明接收系统启动完成的action
android.intent.action.BOOT_COMPLETED
声明接收系统启动完成广播所需的权限
android.permission.RECEIVE_BOOT_COMPLETED






编写APP广播接收拨号时系统发出的广播
编写及静态注册广播接收者
声明action(android.intent.action.NEW_OUTGOING_CALL)
声明权限(android.permission.PROCESS_OUTGOING_CALLS)




编写APP接受者演示静态注册及动态注册不同?
相同点:编写,工作机制
不同点:注册方式不同,生命周期不同(静态注册每次接收广播都创建一个新对象)


动态注册(在哪个页面注册,应在哪个页面解除注册)
registerReceiver(intent,filter)
unregisterReceiver(intent)
静态注册(AndroidManifest.xml)


说明:在发送广播时指定的权限如何声明及使用。




BroadCastReceiver相关应用案例(有序广播)


应用场合?(电话拦截,短信拦截)


有序广播本身是按广播的优先级接收广播,优先级比较高的广播接受者对象
接收到广播以后可以优先处理数据或终止广播的继续传递。




有序广播的发送时借助sendOrderedBroadcast
abortBroadcast();//终止广播的继续传递






广播的本地化(只能在本地化进程内部)应用?


广播对象的本地化应用需要借助LocalBroadcastManager来实现广播的发送。
此广播只能在进程内部被接收,其他进程无法接受。




本地广播具体应用步骤?


获得Local;BroadcastManager对象
注册广播为本地广播
manager.registerReceiver(receiver, filter);
发送广播
manager.sendBroadcast(itent);
解除注册
unregisterReceiver(receiver);

0 0