浅谈:Android应用清理内存

最近这段时间一直在研究做手机应用开发的时候遇上android内存清理的问题,看很多的资料,也尝试了很多方法,不过都没有用,后来不断的摸索终于整出来,以下特意总结了一下内存清理的方法,可以将那些无用的进程给shut down掉,上代码~

1 protected void onClearMemory(Context context) {

2 ActivityManager activityManger = (ActivityManager) context

3 .getSystemService(Context.ACTIVITY_SERVICE);

4 List list = activityManger

5 .getRunningAppProcesses();

6 if (list != null)

7 for (int i = 0; i < list.size(); i++) {

8 ActivityManager.RunningAppProcessInfo apinfo = list.get(i)

9

10 String[] pkgList = apinfo.pkgList;

11

12 if (apinfo.importance >=

13 ActivityManager.RunningAppProcessInfo.IMPORTANCE_FOREGROUND) {

14

15 for (int j = 0; j < pkgList.length;j++) {

16

17 if(pkgList[j].equals(context.getPackageName())) {

18 continue;

19 }

20

21 if (Build.VERSION.SDK_INT<= Build.VERSION_CODES.FROYO) {

22 activityManger.restartPackage(pkgList[j]);

23 } else {

24 activityManger.killBackgroundProcesses(pkgList[j]);

25 }

26 }

27 }

28 }

29

30 new AlertDialog.Builder(SettingActivity.this)

31 .setTitle("请注意")

32 .setMessage("内存清理完毕")

33 .setPositiveButton("确定", null)

34 .show();

35

36 }

getRunningAppProcesses():得到那些正在运行的进程;

RunningAppProcessInfo:得到正在进行的进程信息;

Importance:在android中分为几个级别

1、IMPORTANCE_FOREGROUND前台进程

所谓前台进程就是指用户完成当前工作而需要的进程。判断条件如下(满足其一即可):

-进程中的某个Activity正在与用户进行交互(Activity的onResume()方法被调用)

-绑定到与当前用户正在交互的activity的Service所在的进程

-进程中的某个Service正运行在前台,即这个service的startForeground()方法被调用

-进程中的某个Service正在执行生命周期回调方法(比如,onCreate(),onStart(),或者onDeatroy())

-进程中的BroadcastReceiver正在执行onReceive()方法。

一般来说的话,在某特定时刻,也仅会有为数不多的几个前台进程。这些前台进程的重要性最高,当系统内存低到很低,以致不能继续运行这些所有的进程的话,系统将会杀死这些进程。这种情况下,一般是指系统已经到了一个极限边缘了,所以为了让UI继续有反应的话,系统不得不杀死一些前台进程;

2、IMPORTANCE_VISIBLE可视进程

可视进程是指没有前台运行的组件,但仍然会对用户在屏幕看到的内容造成影响的进程。满足下面条件的进程都可以算作可视进程:

-进程运行的Activity不在前台,但仍然是可见的(调用了onPause()方法)。这种情况可能是这样的,正在前台运行的Activity启动了一个对话框,这个对话框悬浮在这个activity之上,但仍有部分可见。

-进程中的Service绑定到了一个可视(或前台)的activity(该activity已调用了onPause()方法)。

可视进程也是有着极高重要性的进程,只有在系统为了保持前台进程运行而不得不杀死可视进程的时候,才会杀死可视进程;

3、IMPORTANCE_SERVICE服务进程

所谓的服务进程,就是指除了上面两种进程外,如果一个进程已经通过startService()方法启动了一个service的进程。虽然这种service进程跟用户的看到的内容不相关,但它们所做的工作也是用户关心的(比如在后台播放音乐或者正在下载互联网上的资源),系统会一直保持服务进程,除非系统为了前台进程和可视进程的运行,而不得不杀死服务进程;

4、IMPORTANCE_BACKGROUND后台进程

后台进程是指进程中的activity当前对用户来说不可见(这个activity调用了onStop()方法)。后台进程不会对用户的体验造成任何影响,并且系统可以在前台进程、可视进程、服务继承需要内存资源的时候会杀死后台进程。通常会有很多后台进程运行,并且这些后台进程保存在一个最近使用列表中,这样做的好处就是保证用户最近看到的进程最后被杀死。如果一个activity已经正确的实现了生命周期方法,并且保存了当前的状态,那么系统杀死这些后台进程对用户的可视效果来说的话,没有任何影响,因为当用户返回回来的时候,这个activity已经保存了所有的可视状态;

5、IMPORTANCE_EMPTY空进程

一个空进程没有任何运行的程序组件。系统保持空进程存在的唯一原因就是为了缓存方面的考虑,这样做主要是为了提高组件的启动时间。系统经常会杀死这些空进程来保持整个系统资源和内核缓存之间的平衡。

由此可见,importance数值越低级别越重要,因此我们可以根据自己的需要来判断不同的级别。

2.2版本以下的用activityManger.restartPackage(pkgList[j]);对应权限

2.2以上的用killBackgroundProcesses(包名);对应权限

另外推荐一款小编经常用的APP在线测试工具:www.ineice.com

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,657评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,662评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,143评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,732评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,837评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,036评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,126评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,868评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,315评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,641评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,773评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,470评论 4 333
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,126评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,859评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,095评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,584评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,676评论 2 351

推荐阅读更多精彩内容