其实我对Android是抱着一个好奇的态度来学的,或者说也算不上学,应该算体验,我想看看移动开发有什么吸引人的地方。目前Android的程序只能用Java来开发,我对Java其实并不是很熟悉,只是草草看过一本入门的书,印象没有C那么深刻,但是还好,就Android的开发来说这已经足够了。下载了Android的SDK和一些辅助的玩意我就开始折腾了,IDE是Eclipse。Android开发的屏幕布局采用XML布局方式,部分资源,包括字符串、控件等等以XML的形式声明在res文件夹下,在主程序中调用,很常见的情况是在XML文件里声明控件,比如TextView之类的,然后再主程序中new一个控件,直接调用XML声明的相应部分。而在XML文件中,已经把该资源的全部属性设定好,包括长、宽、字体大小、颜色等。这无形中把资源给“模块化”了。这是android开发和其他程序开发比较不同的地方。android基于Linux内核这种事已经不算新鲜事了,很多系统都基于Linux内核。但是android的特别之处除了开发上的特点以外,还有一个就是程序在运行时的行为和以往我接触到的程序运行机制有很大不同。在传统PC机或者其他一些手机上,用户对应用程序有绝对的掌控权,在应用程序的系统菜单上选择“退出”或者“关闭”之类的选项会直接杀死进程,而在android系统中不是这样的。在android中,应用程序的生命周期并不是由应用程序自身直接控制的,而是由系统,当系统需要释放内存来运行新进程或者保证某些后台进程和前端进程顺利执行的时候才会释放相应应用程序的资源,这个释放过程有一个重要性的层次。android中进程的层次如下(重要性由高到低):1、前端进程。顾名思义,前端进程就是目前显示在屏幕上和用户交互的进程,在系统中前端进程数量很少,而这种进程是对用户体验的影响最大,只有系统的内存稀少到不足以维持和用户的基本交互时才会销毁前端进程。因此这种进程重要性事最高的。2、可见进程。可见进程也拥有一个可视化的界面,只是目前不是最上层界面(最上层界面在前端进程里面),可见进程一般调用了OnPause(),可见进程比前端进程重要性低,但是在交互方面影响还是很大,因为用户可能随时切换过去,所以系统不会轻易销毁它。3、服务进程。一个服务进程就是一个Service,它调用了startService(),就是UNIX中说的守护进程,对用户不可见,但是保证了一些重要的事件被监听或者维持着某些状态,比如网络数据传输、后台音乐播放,这类进程在内存不足且为了保证前端交互的顺利进行的时候被销毁。4、后台进程。这里叫后台进程可能会和一般意义上的后台进程混淆,要说明的是,android里的后台进程是调用了OnStop()的,可以理解成用户暂时没有和这个进程交互的愿望,所以这里后台进程有点“待销毁”的意思。5、空进程。这是一种系统缓存机制,其实就是个进程的外壳,当有新进程创建的时候,这个空进程可以加快进程创建速度,当系统内存不足的时候,首先销毁空进程。
android中进程重要性层次
|
进程从创建到被销毁全过程
|