安卓app占用的系统运行内存过大,用户使用过程中,如果一直打开app,运行内存很快会被占满,系统会非常卡顿。卡顿的根源在于没有及时回收内存以运行新的app。有些系统的内存清理策略并不一定符合自己的需求,所以想自己实现内存清理服务。因无法获取root权限,所以通过开发者模式下的adb shell命令,来进行内存清理。用户需要开启开发者模式,并通过adb shell来运行该程序。清理进程的核心命令是:am force-stop。
a、运行cmd窗口,进入build/目录,然后运行如下命令上传程序包:
adb shell mkdir -p /data/local/tmp/mobile-memory/logs
adb shell mkdir -p /data/local/tmp/mobile-memory/goroot/lib/time/
adb push mobile-memory-clean /data/local/tmp/mobile-memory/
adb push start.sh /data/local/tmp/mobile-memory/
adb push stop.sh /data/local/tmp/mobile-memory/
adb push zoneinfo.zip /data/local/tmp/mobile-memory/goroot/lib/time/
b、在cmd窗口,启动程序:
注意:start.sh脚本中有参数设置,用户可根据实际情况修改。
adb shell
cd /data/local/tmp/mobile-memory/
source start.sh
a、在windows系统下安装golang开发环境;
b、配置交叉编译环境(有点复杂,自行百度);
c、进入build/目录,通过文本编辑器,打开build64.bat,根据具体情况,修改如下参数:
set CC=D:\adb\gcc-linaro_aarch64-linux-gnu\gcc\bin\aarch64-linux-gnu-gcc
set CXX=D:\adb\gcc-linaro_aarch64-linux-gnu\gcc\bin\aarch64-linux-gnu-g++
d、直接双击build64.bat,编译并上传程序包;
e、在cmd窗口,启动程序:
注意:start.sh脚本中有参数设置,用户可根据实际情况修改(白名单)。
cd /data/local/tmp/mobile-memory/
source start.sh
a、打开cmd窗口,逐行运行如下命令:
adb shell
cd /data/local/tmp/mobile-memory/
source start.sh
a、打开cmd窗口,逐行运行如下命令:
adb shell
cd /data/local/tmp/mobile-memory/
sh stop.sh
1、每隔一定时间,监控一次内存使用率。
2、当内存使用率达到设定的阈值时,开始内存清理。
3、内存清理策略:
(1)白名单内的不清理
(2)获取所有普通用户进程,按最近使用情况排序,优先清理最近未使用的进程,一直清理到满足特定条件为止。既预留一定可用内存使手机能够流畅地打开新的app,又尽最大努力保活已运行app。
【魅族note6,flyme6】 CPU:骁龙625;运行内存:3GB;存储:32GB;
在“系统管家”中,允许所有第三方app后台运行。
持续打开多个app,系统能预留足够的内存运行新的app,能及时清理最近未使用的app,能保活最近使用的2~3个app,效果很棒。只是手机硬件配置较低,打开app会慢些。
可以跟自带的“系统管家”结合使用:在“系统管家”中设置app为“允许后台运行”或“智能后台”。
更多策略,等你来定制。