BroadcastReceiver接受来自sendBroadcast()发送的Intent。有两种方法来注册BroadcastReceiver,动态或者静态。动态方法是通过android的接口registerReceiver及unregisterReceiver来绑定,静态呢则定义在AndroidManifest.xml的<receiver>标签里面。可以参考:Android提高第六篇之BroadcastReceiver.
一般情况下,如果你在resume中绑定了BroadcastReceiver,那么建议在pause的时候解绑定。这样可以避免不必要的系统开销。但是如果你的BroadcastReceiver是希望接受系统ACTION的,并且当activity在不在当前屏幕也希望接收。那么你在ondestroy的时候解开绑定。
Broadcast有两个类型的广播:
-
Normal broadcasts:接受来自Context.sendBroadcast发送的INTENT。这种广播是完全异步的。所有该类型的广播接受者接受广播是无序的。这种方式大部分情况下,接受者都能同时获取广播并处理,具有更高的效率,但是对于这种情况,不能使用中断的API。
- Ordered broadcasts:接受来自Context.sendOrderedBroadcast发送的INTENT。而对于有序的广播,每次只能发送一个广播给一个接受者。每个接受者只能按照秩序来处理广播,并且当前接收器能传送一个Result给下个处理器,同时它也能abort本次广播,这样其它在它后面的接收器就无法接受到广播了。而接受器的接收顺序可以由intent-filter的android:priority属性来定义,如果android:priority一样那么就随机了。
另外需要注意的是,尽管BroadcastReceiver是通过Intent来进行通讯的,但是不要跟startActivity的Intent混同,它的Intent广播机制是跟startActivity的Intent机制完全隔离的。他们是完全不同的,BroadcastReceiver是不可能看到或者捕捉到startActivity的Intent的。
BroadcastReceiver的生命周期。一个BroadcastReceiver对象只在调用它的onReceive(Context, Intent)方法期间是被认为有效的。一旦从该方法返回,这个对象就被认为是无效的了。基于此,我们在onReceive(Context, Intent)方法中能做的事情,最好不要执行异步代码。因为你需要从一个异步执行的方法中返回,但是那时候该对象已经不存在了。特别支出,在onReceive(Context, Intent)方法里不要显示一个dialog,如果你有这个需求,那么你可以用NotificationManager
API作为替代;或者在这个方法里你试图绑定到一个服务,这种情况,你应该调Context.startService()方法来给service发送消息。
接收器所在进程的生命周期,当接收器的onReceive(Context, Intent)执行期间,所在进程会被认为是前台进程,而具备最高优先级,除非是内存严重不足,否者不会被kill的。当方法执行完返回之后,它就和普通的application的进程类似,如果该进程只有一个接收器在执行,那么当接收器方法执行完,它就被认为是一个空进程,而处于一个最低优先级状态,随时会被系统回收。
分享到:
相关推荐
3. 广播接收:实现BroadcastReceiver类,重写onReceive()方法处理接收到的广播。 四、其他重要概念 1. Activity:应用程序的窗口,处理用户交互,管理用户界面。 2. Intent:Android中用于启动Activity、Service...
Android应用程序的基本组成包括活动(Activity)、服务(Service)、广播接收器(BroadcastReceiver)和内容提供者(ContentProvider)。活动是用户与应用交互的入口,服务在后台运行,广播接收器监听系统或自定义...
《Android经典入门教程》 Android,作为全球最广泛使用的移动操作系统之一,为开发者提供了丰富的功能和灵活的平台来创建各种应用程序。本教程旨在为初学者提供一个全面的Android入门指导,帮助他们理解并掌握...
标题“Android开发入门经典”表明本文档是一本针对初学者的Android开发入门指南。描述部分提到的“第一部分 Android的入门基础”是指学习Android开发的起始阶段,需要了解Android平台的基本概念,包括它是什么,拥有...
BroadcastReceiver接收系统广播消息,Intent用于组件间通信。理解这些组件的工作原理和使用方法,有助于构建复杂的应用架构。 7. **权限管理**:随着Android系统版本的升级,权限管理变得更为严格,应用需要在运行...
此外,还会介绍服务(Service)、广播接收器(BroadcastReceiver)和内容提供者(ContentProvider),这被称为Android的四大组件。 Android开发还包括数据存储,比如SQLite数据库的使用,文件操作,以及...
《Android开发快速入门教程》是一本专为有一定Java基础的学习者设计的指南,旨在帮助他们迅速掌握Android应用开发的基本技能。在本教程中,我们将深入探讨Android开发环境的配置、新项目的创建以及如何导出APK安装包...
2. **基本架构**:Android应用基于组件模型,主要包括四大组件:Activity(活动)、Service(服务)、BroadcastReceiver(广播接收器)和ContentProvider(内容提供者)。学习如何在代码中创建和管理这些组件至关...
一个Android应用由多个组件构成,如Activity(活动)、Service(服务)、BroadcastReceiver(广播接收者)和ContentProvider(内容提供者)。理解这些组件的职责和相互作用是Android开发的基础。 五、布局设计 使用...
【Android开发入门与实战的代码】这一主题涵盖了Android应用程序开发的基础知识和实践技巧,适合初学者和希望深化Android技能的开发者。在这个项目中,我们将会探索Android开发环境的搭建、基本组件的理解以及如何...
这部分内容可能包含Android SDK的基本使用,环境配置,Android Studio的介绍,以及Android四大组件(Activity、Service、BroadcastReceiver、ContentProvider)的概念和用法。开发者会学习如何创建第一个Android...
6. **广播接收器(BroadcastReceiver)**:广播接收器用于监听并响应系统广播事件,如网络状态变化、电池电量低等。了解广播机制,可以实现对系统事件的及时响应。 7. **数据存储**:Android提供了多种数据存储方式...
此外,你还会接触到Android的四大组件:Activity、Service、BroadcastReceiver和ContentProvider。它们是构建功能丰富应用的基础,学习如何正确使用和交互这些组件,能使你更好地理解和设计复杂的Android应用架构。 ...
在本资源中,我们聚焦于"Android开发从入门到精通"这一主题,特别是关于第9章的源码。这表明该压缩包包含了Android应用开发的一个关键章节的学习资料,特别是实战案例,这对于初学者和进阶者都极具价值。以下是根据...
Android应用的基本结构包括活动(Activity)、服务(Service)、广播接收器(BroadcastReceiver)和内容提供者(ContentProvider)。活动是用户界面的主要载体,服务则在后台运行,不与用户交互。广播接收器用于监听...
- **应用程序开发的结构**:Android应用程序通常由多个组件构成,包括Activity、Service、BroadcastReceiver和ContentProvider等。 - **API参考文档的使用**:官方提供的API文档是开发者了解如何使用各种API的重要...
《Android开发从入门到精通》是一本旨在帮助初学者及进阶者掌握Android应用程序开发的教程书籍。随书附带的光盘源代码是作者为了辅助读者理解和实践书中理论知识而精心准备的资源集合。这些源代码涵盖了Android开发...
"Android 从入门到精通课后习题"针对第七章的内容提供了习题解答,旨在帮助学习者巩固所学,加深理解。这一章节可能涵盖了Android应用的基本架构、UI设计、数据存储、网络通信等多个方面。 一、Android应用基础 ...
以上只是对Android开发中一些基础和关键知识点的概述,实际开发中还需要深入学习更多高级主题,如Fragment、服务(Service)、广播接收器(BroadcastReceiver)、通知(Notification)、数据库(SQLite)、异步任务...
"Android开发入门与实战体验-源代码"提供了一个绝佳的学习资源,其中包含了书中的所有代码示例,每个章节都有对应的文件夹,便于学习者按照章节逐步理解并实践Android应用开发。 首先,我们要了解Android开发的基础...