首先你要理解android的进程分级,每种级别代表不同的工作方式,和内存使用情况
- 前台进程(Foreground),比如ireader,ireader的程序就是前台进程,这些进程是不会被系统优先结束的.当我把它切到后台的时候,它就变成后台进程了.
- 还有可见进程(Visible),比如输入法程序,你平时是看不见它的,但是在你打开输入界面的时候,它会很快的弹出来。
- 主要服务,如电话,短信,这些主要服务平时也不会被系统自动结束,除非你非要关它,关了也会自己重新加载的.这也是你完全释放内存以后过一会就看着内存可用值又慢慢降低的原因
- 次要服务,诸如谷歌 企业套件,Gmail,联系人,它们和一些系统功能相关,比如Gmail的邮件推送,我们时常需要用到它们,所以系统也不会去终止它们,终止了也会自动加载。
- 后台进程,这种后台进程在内存极度不够的时候,会被系统选择性的干掉的.
- 内容供应节点,没有程序实体,仅提供内容供别的程序去用的,比如日历供应节点,邮件供应节点等.在系统自动终止进程时,这类程序享有优先的被干掉权.
- 空进程,没有任何东西在内运行的进程,有些程序在退出后,依然会在进程中驻留一个空进程,这个进程里没有任何数据在运行,作用往往是提高该程序下次的启动速度或者记录程序的一些历史信息.这部分进程无疑是系统最先终止的.
那一般内存管理如何实现呢?
结束除主要服务、次要服务,之外的所有进程,达到内存释放的效果
- 1、killProcess(int pid)
- android.os.Process.killProcess(android.os.Process.myPid());
- 2、System.exit(int code)
-
- System.exit(0);
-
- 3、void killBackgroundProcesses(String packageName)
通过对linux的系统设置进行进程管理,分别为六类进程设定不同的阈值来操纵系统的内存分配机制,以达到永远有效。