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

关于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属性,可以让这两个租金分别开启两个不同的进程。当然两个组件也可以运行在同一个进程里面,这样可以看出开启进程的数目与组件之间没有必然的关系,所谓是相互独立的。


  

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


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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值