赞
踩
广播在应用程序中担任的角色:只担任开启程序其他组件的角色。不能在广播接收器中进行过多的业务逻辑和耗时的操作,不能开启线程等。
根据广播的性质可以将广播分为:标准广播和有序广播
根据广播的范围可以分为:全局广播和本地广播
标准广播:异步的,发送广播之后,广播接收器可以同时接收到发送的广播,效率比较高
有序广播:广播有优先级的(可设置),也可以截断广播 intent-filter标签的属性中设置:android:priority="100"
全局广播:其他的应用程序可以接收到本程序发送的广播,其他应用程序也可以向本程序发送广播
缺点:本程序可以发送广播到其他应用程序,容易造成数据泄密;其他应用程序可以向本程序发送垃圾广播,且有安全漏洞
本地广播:只在本程序内部发送的广播(没有静态注册)
优点:不会有数据泄密和安全漏洞问题,且传播的效率更高
使用方法:LocalBroadCastManager manager = LocalBroadCastManager.getInstance(this);
然后使用manager注册和注销服务,其他都和全局广播一样
广播的注册方式:动态注册、静态注册
动态注册:比较灵活,需在代码中手动注册和注销广播,程序启动之后才能接收到广播
静态注册:在xml文件中注册,程序不用启动就可以接收到广播
发送标准广播:sendBroadCast(intent)
发送有序广播:sendOrderedBroadCast(intent,null)
截断广播:abortBroadCast()
需求:当在某个Activity中,想程序退出(退出全部的Activity),可以使用广播
若有三个Activity:MainActivity、SecondActivity和 ThirdActivity,在ThirdActivity中就要求退出程序,则用以下方法可实现:
在MainActivity中创建广播接收器
class MainBroadCast extends BroadcastReceiver{
@Override
public void onReceive(Context context, Intent intent) {
Log.d("TAG", "MainBroadCast AND MainActivity.this.finish()");
//退出Activity
MainActivity.this.finish();
}
}
然后在onCreate()方法中注册需要接收的广播,在onDestroy方法中注销广播
IntentFilter filter = new IntentFilter();
filter.addAction("com.exit.activity");
caster = new MainBroadCast();
registerReceiver(caster, filter);
接着在SecondActivity中创建广播接收器
class SecondBroadCastReceiver extends BroadcastReceiver{
@Override
public void onReceive(Context context, Intent intent) {
Log.d("TAG", "SecondBroadCastReceiver AND SecondActivity.this.finish()");
SecondActivity.this.finish();
}
}
然后在onCreate()方法中注册需要接收的广播,在onDestroy方法中注销广播
IntentFilter filter = new IntentFilter();
filter.addAction("com.exit.activity");
receiver = new SecondBroadCastReceiver();
registerReceiver(receiver, filter);
最后在ThirdActivity中发送关闭activity的广播
Intent intent = new Intent("com.exit.activity");
sendBroadcast(intent);
这样就可以退出全部的activity了。方法执行的顺序是:
MainBroadCast AND MainActivity.this.finish()
SecondBroadCastReceiver AND SecondActivity.this.finish()
ThirdActivity onPause()....
MainActivity onDestroy()....
SecondActivity onDestroy()....
ThirdActivity onStop()....
ThirdActivity onDestroy()....
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。