关于Android的组件和进程的理解


Android有四大组件,分别是Activity, Service, Broadcast Receiver和Content Provider,这四大组件是Android的核心部分。Android中组件与进程是相互独立的,当组件关闭的时候进程还可以继续存在。这样设计的妙处就在于当我们重新打开组件(比如一个Activity)时, Android系统会由于进程已存在从而无需重复创建进程,加快了APP的启动时间,优化了系统的资源利用。
在设计桌面程序的时候,一般会有一个程序入口,比如C语言程序的main入口,MFC程序的WinMain入口等。但是在android上面,程序的入口有所不同,组件就是程序的入口。你可以通过Broadcast Receiver接收到相应的广播后启动APP, 也可以点击桌面的快捷方式启动APP, 或者是通过后台Service启动相应的进程。按照Android设计的思路,当应用程序包含有多个组件的时候,是不能确定哪一个组件是程序的入口的,而且这些组件在某些情况下都可以作为程序的入口。组件和进程的相对独立可以带来更好的移动体验,使得进程对组件来说更加透明,也有利于程序的开发。但是这样做还有一个问题,既然组件和进程是相互独立的,那么由组件开启的进程是谁负责关闭或者维护呢?我们知道Android系统提供了一系列的系统服务和模块,正是这些服务和模块管理着组件的开启和关闭。
组件与进程之间, 组件与组件之间,进程与进程之间是怎么通信的呢?Android都是在OS这个级别里面提供一些支持,其中有一个很重要的服务-AMS,专门负责组件和进程的开启关闭。还有就是Binder IPC,这是Android系统里面一个很大的亮点,为组件提供一个很便捷、高效的机制,还有Low Memory Killer也是很重要的一个组件,主要负责杀进程。

下面简单做了一个例子。例子中主要由两个组件,FirstActivity和SecondActivity, 通过设置每个Activity的andrpid:process属性,可以让这两个租金分别开启两个不同的进程。当然两个组件也可以运行在同一个进程里面,这样可以看出开启进程的数目与组件之间没有必然的关系,所谓是相互独立的。

关于Android的组件和进程的理解_第1张图片关于Android的组件和进程的理解_第2张图片


这时可以看到系统中已经开启了两个进程:

关于Android的组件和进程的理解_第3张图片


当关闭SecondActivity时,其对应的进程依旧没有关闭。也就是组件消失了,但是进程还在,方便下次开启时快速启动。同样,如果SecondActivity在最上面,我们这时关闭com.example.hello进程后,按一下手机的back键或者是点击SecondActivity中的“Finish Activity”按钮,可以发现其对应的FirstActivity并没有消失。这时优惠重新创建新的进程(com.example.hello)。说明组件和进程之间是相互独立的。

更多相关文章

  1. Android应用程序请求SurfaceFlinger服务渲染Surface的过程分析
  2. Android程序开发初级教程
  3. 《Android 手机程序设计实用教程》PDF版电子书下载
  4. Android 应用程序快速启动的秘诀

随机推荐

  1. Android中View的绘制过程 onMeasure方法
  2. 【Android 初学者】开发工具介绍:studio
  3. 基于android的远程视频监控系统
  4. Android API Guides---USB Host and Acce
  5. android下载手动下载Android SDK
  6. 【Android 界面效果29】研究一下Android
  7. android 一个SQLite数据库多个数据表的基
  8. Android中的Searchview以及SearchableDic
  9. windows 8环境—android studio初步体验(
  10. 谷歌将大改Android用户体验 欲取消自定义