内容简介:Android 四大组件分别是 Activity、Service、BroadcastReceiver 和 ContentProvider。Service 有两种工作状态:一种是启动状态(
Android 四大组件分别是 Activity、Service、BroadcastReceiver 和 ContentProvider。
四大组件的运行状态
- 除了 BroadcastReceiver 以外,其他三种组件都必须在 AndroidManifest 中注册,而 BroadcastReceiver 既可以在 AndroidManifest 中注册也可以通过代码动态注册。
- Activity、Service 和 BroadcastReceiver 的调用都需要借助 Intent,而 ContentProvider 却不需要。
- Activity 是一种展示型组件,用于向用户展示界面,可由显式或者隐式 Intent 来触发启动。
- Service 是一种计算型组件,用于在后台执行一系列计算任务。尽管 Service 是用于执行后台计算的,但是它本身是运行在主线程中的,因此耗时的后台计算仍然需要在单独的线程中去完成。Service 组件有两种状态:启动状态和绑定状态。当 Service 处于绑定状态时,外界可以很方便地和 Service 进行通信。
- BroadcastReceiver 是一种消息型组件,用于在不同的组件乃至不同的应用之间传递消息,它工作在系统内部。广播有两种注册方式:静态注册和动态注册。静态注册是在 AndroidManifest 中注册,在应用安装的时候会被系统解析,这种广播不需要应用启动就可以收到相应的广播。动态注册需要通过
Context.registerReceiver()
来注册,通过Context.unRegisterReceiver()
来解除, 这种广播需要应用启动才能注册并接收广播。BroadcastReceiver 组件一般来说不需要停止,它也没有停止的概念。 - ContentProvider 是一种数据共享型组件,用于向其他组件乃至其他应用共享数据。ContentProvider 中的
insert
、delete
、update
和query
方法需要处理好线程同步,因为这几个方法是在 Binder 线程池中被调用的,另外 ContentProvider 组件也不需要手动停止。
Activity 的工作过程
Service 的工作过程
Service 有两种工作状态:一种是启动状态( startService
),主要用于执行后台计算;一种是绑定状态( bindService
),主要用于其他组件和 Service 的交互。需要注意的是,这两种状态是可以共存的。
启动状态
绑定状态
BroadcastReceiver 的工作过程
简单回顾下我们使用广播接收器的过程:
onReceive registerReceiver
广播的注册过程
广播注册分为静态注册和动态注册,其中静态注册是由 PackageManagerService 来完成整个注册过程,当然其他三大组件也是这样完成注册的。
动态注册过程
发送和接收过程
- 广播的发送有几种类型:普通广播(Normal Broadcast)、系统广播(System Broadcast)、有序广播(Ordered Broadcast)、粘性广播(Sticky Broadcast)和 App应用内广播(Local Broadcast)。
- 从 Android 3.1 开始,处于停止状态的应用无法接受到开机广播。停止状态分为两种情况:一是应用安装后未运行;二是应用被手动或者其他应用强停了。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- Spring MVC源码(一) ----- 启动过程与组件初始化
- Apache HTTP组件提权漏洞利用过程深度分析
- 存储过程 – 重新编译后,存储过程运行得很快
- 面试:谈谈你对 MyBatis 执行过程之 SQL 执行过程理解
- 死磕Android_App 启动过程(含 Activity 启动过程)
- 【PHP源码学习】关于$a=1整个过程的gdb过程与相关验证
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Domain-Driven Design
Eric Evans / Addison-Wesley Professional / 2003-8-30 / USD 74.99
"Eric Evans has written a fantastic book on how you can make the design of your software match your mental model of the problem domain you are addressing. "His book is very compatible with XP. It is n......一起来看看 《Domain-Driven Design》 这本书的介绍吧!