一、相关概念
1、BroadcastReceiver
BroadcastReceiver是全局监听器,用于监听系统全局的广播消息,可以方便的实现系统中不同组件之间的通信
2、BroadcastReceiver的生命周期
与Service、Activity具有完整的生命周期不同,BroadcastReceiver本质上只是一个系统级的监听器,负责监听各程序所发出的Broadcast。
3、BroadcastReceiver的编码实现方式
a、编写类,继承BroadcastReceiver
b、AndroidManifest.xml中配置receiver ,此时自动完成注册;手动注册,使用registerReceiver()
c、调用BroadcastReceiver:
sendBroadcast(intent) 或者 sendOrderedBroadcast(intent2, null)
4、有序广播
普通广播:
普通广播是完全异步的,可以在逻辑上的同一时刻被所有接受者接收到,消息传递的效率很高。但缺点是接受者不能将处理结果传递给下一个接受者,并且无法终止BroadcastReceiver Intent的传播。
有序广播:
Ordered Broadcast的接收者按照预先声明的优先级依次接收Broadcast。
优先级 -1000到1000,数值越大优先级越高,在xml中通过priority或者编码setPriority设置;
通过sendOrderedBroadcast(intent2, null)启动有序广播;
在前一个BroadcastReceiver中设置处理结果通过setResultExtras(bundle)实现;
在后一个BroadcastReceiver中,通过Bundle bundle=getResultExtras(true);获取前面的处理结果;
通过abortBroadcast();取消继续广播
二、编码实现
activity中定义按钮点击事件,点击时发送广播 @Override public void onClick(View v) { // TODO Auto-generated method stub switch (v.getId()) { case R.id.btn_broad0: Intent intent=new Intent("com.example.receiver.MyBroadcastReceiver"); intent.putExtra("data", "我是数据"+new Date().toLocaleString()); sendBroadcast(intent); break; case R.id.btn_broad1: Intent intent2=new Intent("com.example.receiver.MyOrderedReceiver"); intent2.putExtra("data", "我是数据"+new Date().toLocaleString()); sendOrderedBroadcast(intent2, null); break; default: break; } }
普通广播接收 public class MyBroadcastReceiver extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { Toast.makeText(context,intent.getExtras().getString("data").toString(), Toast.LENGTH_SHORT).show(); } }
有序广播接收者1 public class MyOrderedReceiver1 extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { // TODO Auto-generated method stub Bundle bundle=intent.getExtras(); Toast.makeText(context, "receiver1"+bundle.getString("data").toString(), Toast.LENGTH_SHORT).show(); bundle=new Bundle(); bundle.putString("data2", "我是新数据"); //设置处理结果数据,级别低的BroadcastReceiver可以接收 setResultExtras(bundle); } }
有序广播接收者2 public class MyOrderedReceiver2 extends BroadcastReceiver { @Override public void onReceive(Context context, Intent intent) { // TODO Auto-generated method stub //获取前面BroadcastReceiver的处理结果 Bundle bundle=getResultExtras(true); Toast.makeText(context, "receiver2"+bundle.getString("data2").toString(), Toast.LENGTH_SHORT).show(); abortBroadcast();//取消继续广播 } }
<receiver android:name="com.example.receiver.MyBroadcastReceiver" > <intent-filter> <action android:name="com.example.receiver.MyBroadcastReceiver" /> </intent-filter> </receiver> <receiver android:name="com.example.receiver.MyOrderedReceiver1" > <intent-filter android:priority="10"> <action android:name="com.example.receiver.MyOrderedReceiver" /> </intent-filter> </receiver> <receiver android:name="com.example.receiver.MyOrderedReceiver2" > <intent-filter android:priority="1"> <action android:name="com.example.receiver.MyOrderedReceiver" /> </intent-filter> </receiver>
相关推荐
在Android开发过程中,开发者需要掌握一系列的技术点,包括但不限于组件使用、UI设计、网络通信、数据存储、性能优化等。"Android代码-android-note"这个压缩包文件很可能包含了开发者在实践这些技术时积累的笔记和...
本文将深入探讨一款基于Android平台的个人消费记录软件,通过分析其源码,我们可以了解到如何利用Android SDK进行应用开发,尤其是涉及到用户界面(UI)设计和数据管理等方面的关键技术。 一、项目概述 这款名为...
在Android平台上,开发一款手机卫士应用涉及到许多技术点,特别是流量管理功能是现代移动设备用户非常关注的一个特性。在“Android项目实战--手机卫士34--流量管理”中,我们将深入探讨如何构建这样的功能,帮助用户...
《深入解析Android-screen-monitor源码》 Android-screen-monitor是一款用于实时监控Android设备屏幕状态的工具,它的...通过实践和学习源码,开发者可以提升自己的技术水平,为开发更复杂的Android应用打下坚实基础。
5. **来电处理**:考虑到手机设备的特性,需要监听来电事件,当电话接入或拨出时,暂停音乐播放并记录当前播放位置,电话结束时恢复播放。 6. **语言支持**:通过Android的资源文件(res/values/strings.xml)设置多...
7. **BroadcastReceiver**:可以创建一个BroadcastReceiver来监听电话挂断事件,从而在电话挂断后执行某些操作,例如更新UI或者记录通话记录。 8. **ActivityForResult**:如果使用`ACTION_DIAL`来打开拨号器,可以...
4. **Intent和BroadcastReceiver**:如果你的原生弹窗需要在特定事件(如通知)下显示,可以使用Android的Intent和BroadcastReceiver机制。Unity可以广播一个Intent,然后在Android端接收并处理这个Intent,显示弹窗...
总结起来,开发Android电池监控程序涉及的主要知识点有:BatteryManager类的使用、BroadcastReceiver的注册与注销、Intent的解析以及在不同组件间通信。通过这些技术,我们可以构建一个能够实时监控并反馈电池状态的...
【Android音乐播放器设计与实现】 ...通过这个课程设计,学生不仅能够深入理解Android开发,还能够掌握音乐播放器的关键技术和实践技巧,提高解决问题的能力,为未来在移动开发领域的发展打下坚实的基础。
《Android文字冒险游戏-迷雾森林》是一款基于Android平台开发的文字冒险类游戏,它充分利用了Android的基础知识和技术,为玩家创造出一个引人入胜的虚拟世界。在游戏中,玩家通过阅读文字描述、做出选择来推进剧情,...
在Android系统中,USB通信是一种重要的技术,它允许Android设备与其他设备(如电脑、其他Android设备或专用硬件)进行数据交换。"Android-USB-Communication-master_usb_androidusb_"项目是针对这一主题的一个开源...
1. **Android SDK**:作为基于Android平台的项目,它必然使用了Android SDK,包括各种API和工具,如Activity、Fragment、Intent、BroadcastReceiver等,用于构建用户界面和处理应用程序的各种交互。 2. **网络通信...
总结,"Android项目实战--手机卫士09--防盗逻辑以及设置向导的完成_修改"是一个涵盖多个技术点的实践项目,涵盖了Android开发中的定位服务、设备管理、用户交互、数据存储和安全等多个方面,对于提升Android开发者的...
在本项目中,我们主要探讨的是如何在Android平台上...以上就是"Android即时通讯--仿QQ即时聊天源码(含服务器)"项目所涵盖的主要技术点,通过这个项目,开发者可以全面了解即时通讯应用的开发流程,并提升相关技能。
这个个人消费记录软件的源码中,我们可以学习到以下几个关键知识点: 1. **数据存储**:在Android中,通常使用SQLite数据库来存储用户消费记录。源码可能会包含如何创建数据库表,插入、查询和更新消费数据的代码。...
1. **Android应用开发**:了解Android应用程序的基本架构,包括Activity、Service、BroadcastReceiver、ContentProvider等组件的使用。 2. **Java编程**:Android应用主要用Java语言编写,因此需要掌握Java的基础...
这个压缩包文件“Android 签到系统源码-IT计算机-毕业设计.zip”提供了一个完整的Android应用程序示例,特别适合计算机科学与技术专业的学生进行毕业设计和论文研究。这个项目是一个签到系统,它涵盖了Android应用...
【Android 模拟速度表盘】是一个典型的Android应用开发项目,尤其适合计算机科学与技术专业的学生作为毕业设计来深入理解移动应用开发。这个项目的核心功能是创建一个虚拟的速度表盘,能够模拟汽车或其他交通工具的...
本篇文章将深度剖析一款名为"MyNFCDemon"的Android高级应用源码,帮助读者理解和掌握Android NFC(近场通信)技术的应用。 首先,我们要理解NFC是什么。NFC是一种短距离无线通信技术,允许电子设备之间进行非接触式...