关于android中broadcast和BroadcastReceiver浅谈
2015-08-12 15:43
561 查看
第一步:
首先写自己的广播接收
public class MyBroadCaseRecevier extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
if(intent.getAction().equals("com.example.mydemo.dynamic")){
if(!TextUtils.isEmpty(intent.getStringExtra("close"))){
Toast.makeText(context, intent.getStringExtra("close"), 1).show();
}else if(!TextUtils.isEmpty(intent.getStringExtra("open"))){
Toast.makeText(context, intent.getStringExtra("open"), 1).show();
}
}
}
}
第二步:
然后在使用时,先注册广播:
private MyBroadCaseRecevier myBroadCaseRecevier;
private String broacast="com.example.mydemo.dynamic";
//此为动态注册
myBroadCaseRecevier=new MyBroadCaseRecevier();
IntentFilter counterActionFilter = new IntentFilter(broacast);
registerReceiver(myBroadCaseRecevier, counterActionFilter);
第三步:
发送广播:
Intent intent=new Intent();
if(view.getId()==R.id.one_btn){
intent.setAction(broacast);
intent.putExtra("close", "shut down");
}else if(view.getId()==R.id.two_btn){
intent.setAction(broacast);
intent.putExtra("open", "open");
}
sendBroadcast(intent);
在上面三步中,第一步的intent.getAction(),第二步的broacast,和第三步的 intent.setAction(broacast)中的broacast,必须一致
因为在BroadcastReceiver中,会接收不同应用或者同一个应用各种广播,而不同广播的表示就是 intent.setAction(broacast);,所以在MyBroadCaseRecevier中根据intent.getAction()来进行初步分类,然后再对不同的情况进行判断处理,
首先写自己的广播接收
public class MyBroadCaseRecevier extends BroadcastReceiver {
@Override
public void onReceive(Context context, Intent intent) {
// TODO Auto-generated method stub
if(intent.getAction().equals("com.example.mydemo.dynamic")){
if(!TextUtils.isEmpty(intent.getStringExtra("close"))){
Toast.makeText(context, intent.getStringExtra("close"), 1).show();
}else if(!TextUtils.isEmpty(intent.getStringExtra("open"))){
Toast.makeText(context, intent.getStringExtra("open"), 1).show();
}
}
}
}
第二步:
然后在使用时,先注册广播:
private MyBroadCaseRecevier myBroadCaseRecevier;
private String broacast="com.example.mydemo.dynamic";
//此为动态注册
myBroadCaseRecevier=new MyBroadCaseRecevier();
IntentFilter counterActionFilter = new IntentFilter(broacast);
registerReceiver(myBroadCaseRecevier, counterActionFilter);
第三步:
发送广播:
Intent intent=new Intent();
if(view.getId()==R.id.one_btn){
intent.setAction(broacast);
intent.putExtra("close", "shut down");
}else if(view.getId()==R.id.two_btn){
intent.setAction(broacast);
intent.putExtra("open", "open");
}
sendBroadcast(intent);
在上面三步中,第一步的intent.getAction(),第二步的broacast,和第三步的 intent.setAction(broacast)中的broacast,必须一致
因为在BroadcastReceiver中,会接收不同应用或者同一个应用各种广播,而不同广播的表示就是 intent.setAction(broacast);,所以在MyBroadCaseRecevier中根据intent.getAction()来进行初步分类,然后再对不同的情况进行判断处理,
相关文章推荐
- Android应用程序资源的编译和打包过程分析 (转自老罗的博客)
- Android View事件分发和处理
- android 关于蓝牙间通信,及RFID设备读写芯片问题的处理方案
- Android生命周期
- Android自定义ImageView实现图片缩放滑动,双击放大缩小,多点触控缩放
- Android ColorFilter:PorterDuffColorFilter、LightingColorFilter、ColorMatrixColorFilter
- Android中Calendar与Date的区别以及消除时区对日期操作影响的方法
- 【自定义控件】android事件分发机制
- android之view测量总结
- 如何学习android高级编程
- 关于Android数据存储方式(二)——SQLite
- 每个Android开发者都应该了解的资源列表
- Android 开源框架ViewPageIndicator 和 ViewPager 仿网易新闻客户端Tab标签
- Android WebView与JavaScript交互实现Web App
- 如何快速学习android开发
- android 拍卖项目
- Android Studio使用遇到的问题
- android studio中ddms显示不出来,报错
- android 之sqlite 使用及实现增、删、改、查 并使用AndroidTestCase 进行junit 测试
- android 之数据库sqlite 使用