Android-android开发怎么实现内存优化功能?

Android-android开发怎么实现内存优化功能?

瑾兮 发布于 2017-05-08 字数 86 浏览 1302 回复 4

现在android的应用安装比较多,有些是常驻于内存中,请问内存优化的功能该如何开发?

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

瑾兮 2017-10-30 4 楼

It's unnecessary and also a bad idea.请移步这里

不过你要还是执意开发,开源的代码还是很多的。
http://code.google.com/p/freetaskmanager/source/browse/

灵芸 2017-10-13 3 楼

调整lowmemmorykiller的参数,让低优先级的进程在内存剩余较多时就被kill掉
/sys/module/lowmemorykiller/parameters/minfree

夜无邪 2017-05-26 2 楼

可以做一个任务管理的应用,让用户可以手动关掉一些应用。在android4.0上已经有这个功能了。内存优化貌似只有语言一级的优化,不能单独做个应用去优化系统。比如要注意一些java中的不当的操作:数据库的cursor没有关闭,构造adapter没有使用缓存contentview ,Bitmap对象不使用时采用recycle()释放内存等等。

夜无邪 2017-05-19 1 楼

首先你要理解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的系统设置进行进程管理,分别为六类进程设定不同的阈值来操纵系统的内存分配机制,以达到永远有效。