Android——发送和接收广播
2015-09-30 20:57
441 查看
一,发送广播
利用Intent来发送广播。使用:在需要发送广播的地方创建一个Intent对象,将信息的内容和用于过滤的信息封装起来,通过以下三种方法将Intent广播出去:
1,Context.sendBroadcast2,Context.sendOrderedBroadCast3,Context.sendStickyBroadcast 三种方法的区别:
1,sendBroadcast和sendStickyBroadcast发送出去的Intent,对于所有满足条件的BroadcastReceiver都会执行其onReceive方法。但若有多个满足条件的BroadcastReceiver,其执行onReceive方法的顺序是没有保证的。 2,通过sendOrderedBroadCast方法发送出去的Intent,会根据BroadcastReceiver注册时IntentFilter设置的优先级的顺序来执行onReceive方法,相同优先级的BroadcastReceiver执行onReceive方法的顺序是没有保证的。 其中,sendStickyBroadcast主要的不同时,Intent在发送后会一直存在,并且在以后调用registerReceiver注册相匹配的Receiver时会把这个Intent对象直接返回给新注册的Receiver 通常我们在发送广播时候,使用的是sendBroadcast,但需要注意的是,在构造Intent时,必须用一个全局唯一的字符串标示其要执行的动作,通常使用应用程序的包名称,也可以采用自己定义的动作。如果要在Intent中传递其他数据,可以用Intent的putExtra方法。 String Intent_Activity="lhc";Intent intent=newIntent(Intent_Activity);Intent.putExtra("参数",“参数值”);sendBroadcast(intent);
二,接收广播
在于Activity相同的包下面定义广播器。广播器类要继承BroadcastReceiver类。但是在接收到广播之后,要想处理相关事件,我们必须覆盖其OnReceiver方法,在该方法中实现对广播事件的相关处理,当安卓系统接收到与之匹配的广播消息时,会自动启动此BroadcastReceiver开始接受广播。 注意的是:OnReceive方法必须在5秒钟内执行完成,否则安卓系统会认为该组建失去响应,并提示用户强行关闭该组件。因此对于比较耗时的操作,要单独开一个线程。三,声明广播
两种广播的注册方式:1,代码注册广播2,在AndroidMainfest.xml中注册 两种注册类型的区别:1,第一种不是常驻型广播,也就是广播跟随程序的生命周期;2,第二种是常驻类型的广播,也就是说当应用程序关闭后,如果有信息广播过来,程序广播接收器也会被系统调用自动运行。
四,示例
1,发送广播
public class BroadCastActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button button=(Button)super.findViewById(R.id.button);
button.setOnClickListener(new OnClickListener(){
@Override
public void onClick(View arg0) {
String Intent_Action="com.example.broadcastdemp";
Intent intent=new Intent(Intent_Action); //
sendBroadcast(intent);//发送广播,并传递intent
Log.e("BroadcastReceiver","sendbroadcast");
}
});
}
2,接收广播
public class BroadcastReceiverActivity extends BroadcastReceiver{
@Override
public void onReceive(Context arg0, Intent arg1) {
String Intent_Action=arg1.getAction();
if("com.example.broadcastdemp".equals(Intent_Action)){
Log.e("BroadcastReceiver","onReceive");
}
}
}
4,使用XML配置接收广播的类
<receiver android:name=".BroadcastReceiverActivity">
<intent-filter>
<action android:name="com.example.broadcastdemp"/>
</intent-filter>
</receiver>
run 下看看:
相关文章推荐
- Android数据存储和提供器——sharedPreference
- Android——本地服务基础(一)
- Android——本地服务基础(一)
- Android的 LinearLayout的布局属性
- Android和服务器长连接
- android 设置主页面的方式
- <Android知识点整理>2.Android常用的布局
- Android 总结:打造Android中的流式布局和热门标签(源码有详细注释)
- Android之旅(一):搭建Android开发环境
- <Android知识点整理>1.Android的四大组件
- Android Studio打包第三方库自带的so文件的其中一种方法
- Android 事件处理详解(一) —— 基于监听的事件处理 1
- android usb挂载分析
- android 中如何分析内存泄漏
- <Android知识点整理>0.序
- android开发步步为营之80:android多线程总结
- Android技术——切换视图(两)随着ViewPage达到Tab幻灯片浏览
- 关于android中postDelayed方法的讲解
- 20那天android得知
- Android性能专项测试之TraceView工具(Device Monitor)