【朝花夕拾】Android性能优化篇之(三)Anroid内存管理

Android将进程分为了六大类:

1、前台进程(foreground)

       前台进程包括了两部分:目前正在屏幕上显示的进程和系统进程。例如,Dialer Storage、Google Search等系统进程就是前台进程。当你运行浏览器这类应用时,它们的界面就会显示在前台,它们就属于前台进程,当你按home键回到主界面,他们就编程了后台程序。前台用户是用户最不希望终止的。

2、可见进程(visible)

        可见进程是一些不在前台,但用户依然可见的进程,比如:widget、输入法等。这类进程虽然不在前台,但与我们的使用也是密切相关的,用户也不希望他们被终止。时钟、天气、新闻等的widget如果被终止,那他们讲无法保持同步;输入法若被终止了,每次输入时都需要重启输入法,这肯定不是用户所希望的。

3、次要服务(secondary server)

       目前正在运行的一些服务(主要服务,如拨号等,是不可能被进程管理终止的,故这里只谈次要服务),比如:谷歌企业套件、Gmail内部存储、联系人内部存储等。这部分服务虽然属于次要服务,但和一些系统功能依然息息相关,我们时常需要用到它们,所以也不太希望他们被终止。

4、后台进程(hidden)

       虽然用来hidden这个词,但实际上是后台进程(background),就是我们通常意义上理解的启动后被切换到后台的进程,如浏览器、阅读器等。当程序显示在屏幕上时,它们所运行的进程即为前台进程(foreground),一旦按home键(注意不是back键)返回到主界面,程序就停留在后台,成为后台进程。后台进程的管理策略有多种:有较为积极的方式,一旦程序达到后台立即终止,这种方式会提高程序的运行速度,当无法加速程序的再次启动;也有较消极的方式,尽可能多的保留后台程序,虽然可能会影响到单个程序的运行速度,但在再次启动已启动的程序时,速度会有所提升。这里就需要用户根据自己的使用习惯找到一个平衡点。

5、内容供应节点(content provider)

        没有程序实体,仅仅提供内容供别的程序去用,比如日历供应节点,邮件供应节点等。在终止进程时,这类程序应该有较高的优先权

6、空进程(empty)

        没有任何东西在内存运行的进程,比如BTE,在程序退出后,依然会在进程中驻留一个空进程,这个进程里没有任何数据在运行,作用往往是提高该程序下次的启动速度或者记录程序的一些历史信息。这部分程序无疑是应该最先终止的。

猜你喜欢

转载自www.cnblogs.com/andy-songwei/p/9690045.html