进程管理的必要性

移动设备内存空间有限,目前2-4G的内存比较多,虽然已经很大了,但是一个应用进程占用200m,这样很快就会觉得手机卡爆了。再说用户能看到应用也只有一个前台进程,其他的进程占用的内存很多都是浪费了,这样就有必要对这部分浪费的空间进行管理,清除掉那些没用的。

多进程实现:

mainfest清单中配置process

<service android:process=":test1">

以冒号开头“:test1”是私有进程,仅能放置本应用组件,其他应用无法共享该进程空间;

<service android:process="com.honjane.test2">

以包名+类名的是进程是共享进程,可以承载来着不同应用的组件。

除了android:process熟悉,组件配置项的android:mutiprocess属性控制组件进程模型的重要手段。mutiprocess默认为false,

<provider android:mutiprocess="true" ...>

此时,应用就会将该组件嫁接出去,当任何一个第三方应用使用该组件时,都会在第三方应用中备份一份组件对象。而不再是运行在该进程所在进程内(不带来很大并发复杂性问题,开发中使用较少)

进程优先级:

优先级的高低,由进程中组件与用户的交互状态来决定,组件中与用户交互状态越紧密,进程优先级越高。
当前用户交互的界面组件,称为前台进程组件。占用资源最多,对开发者来说,不要让组件执行长时间执行onRevice,service.onstart等函数,让进程停留在前台状态。
可视进程,与用户没有直接交互操作,但是用户可以看见这些组件,直接影响着用户的体验。通常,系统不会回收这些可视组件所在的进程。

进程回收:

1、组件安装优先级高低,优先级低的先被回收
2、优先级相同,越近使用过得进程越后被回收

最要分两类进程 “性能型”和“体验型”
“性能型”最要包括后台进程,空进程与手机性能相关

首先,Android手机会计算性能型进程的最大接受值,当低于这个阀值,不会考虑回收
其次,当性能型进程超过这个阀值,系统尝试回收空进程,如果回收后还是超过这个值,就会考虑回收后台进程,一旦性能型进程低于这个值,回收结束。

不难看出“性能型”进程回收是以进程数量为依据的。这种回收方式粗粒度不够,对资源的控制不够精确,毕竟不同的进程消耗的资源不一样。只按照数量来回收,不够精细。

后台界面组件回收解决了这个问题,它是在进程内部完成的,不影响进程数量和优先级,只实现进程内局部资源的释放。
系统将后台组件按照最近访问时间排序,一旦后台组件超过一个阀值(默认20个),系统按照最近访问时间释放掉那些最老访问的组件。组件被回收前会调用

Activity.saveInstanceState()

讲界面的一些信息暂存到磁盘,然后释放掉该组件,知道低于预设的组件阀值。
当我们要恢复的时候可以在onCreate或者restoreInstanceState()中恢复保存的数据

优先级调整

掌控优先级是有必要的,比如播放音乐,我们不希望播放一段时间,进程被杀死了,音乐停止了。这时候就要提高后台进程的优先级。

1、设置service.startForeground方法,将服务组件与通知组件绑定到一起,给service打开一扇与用户交互的窗口。
2、控制Service.onStartCommend返回值,设置为START_STICKY,这样在进程被强制回收后,会再次调用onStartCommend恢复service,

……
市面上很多保活service方法,这里就不详细谈论了,有兴趣可以查询相关资料

Android进程管理相关推荐

  1. android 进程管理机制,Android的进程管理机制

    Linux系统对进程的管理方式是一旦进程活动停止,系统就会结束该进程.Android系统虽基于Linux,但在进程管理上,采取了另外一种机制.当当前进程活动停止时,系统并不会立即结束当前进程,而是会将 ...

  2. 手机android进程管理,手机进程管理app_华为手机进程管理_手机自动进程管理软件-多特软件站安卓网...

    手机进程管理软件是一款手机进程管理方法app,根据手机进程管理软件你能便捷的控制自己的手机进程,针对有必须的盆友而言非常好. 功能介绍 简约实用的android每日任务停止专用工具.你是不是感觉运作的 ...

  3. Android 进程管理

    在Android中,进程(process)的概念被弱化,传统的进程是程序执行的载体,进程退出意味着应用的关闭.但是在Android中进程知识一个运行组件的容器,当系统需要运行一个组件时,启动包含它的进 ...

  4. 2018 Android面试心得,已拿到offer,android进程管理器

    五.HandlerThread.IntentService理解 六.弱引用.软引用区别 七.int.Integer有什么区别 主要考值传递/引用传递.拆箱/装箱问题 八.手写多种 生产者/消费者 模式 ...

  5. Android进程管理,Android开发者跳槽指南面试必备

    雪上加霜 本人一名Android程序员,今年29岁了.大厂小厂都呆过,现在在腾讯工作!明明工作顺利,家庭和睦儿女成全,但是总是会感觉到,一股无形的压力,推着我走!作为一名程序员我最怕的不是996,也是 ...

  6. Android系统中的进程管理:进程的优先级

    本文是Android进程管理系列文章的第二篇,会讲解进程管理中的优先级管理. 进程管理的第一篇文章:<进程的创建>请跳转至这里. 本文适合Android平台的应用程序开发者,也适合对于An ...

  7. android重复拉起app首页_Android进程管理:Framework层概念

    前情回顾 RickAi,公众号:安卓尖端技术研究Android进程管理:从Kernel到LowMemoryKiller 上一篇文章从Native角度讲解了Android进程管理的相关概念,本文将继续从 ...

  8. Android 内存管理 Memory Leak OOM 分析

    转载博客:http://blog.csdn.net/vshuang/article/details/39647167 1.Android 进程管理&内存 Android主要应用在嵌入式设备当中 ...

  9. Android内存管理机制

    好文摘录 原作: https://www.cnblogs.com/nathan909/p/5372981.html 1.基于Linux内存管理 Android系统是基于Linux 2.6内核开发的开源 ...

  10. Android系统中的进程管理:内存的回收

    本文是Android系统进程管理的第三篇文章.进程管理的前面两篇文章,请参见这里: Android系统中的进程管理:进程的创建 Android系统中的进程管理:进程的优先级 本文适合Android平台 ...

最新文章

  1. linux版本之redhat9------终端中文软件zhcon0.2.6的安装及使用
  2. python list 深复制_Python中list的复制及深拷贝与浅拷贝探究
  3. 只需 5 分钟看完这篇 HTTPS,去阿里面试和面试官扯皮就没问题了!
  4. 辉哥给rockchip修复了一个内存溢出问题
  5. centos长ping输出日志的脚本
  6. CentOS上安装Selenium和google Driver的过程以及问题记录
  7. 计网-基于Cisco模拟器
  8. 复旦和同济计算机学硕,考研择校:复旦、同济、上财哪个更有前途?看网友怎么说!...
  9. php店铺处罚功能开发,Shopee平台店铺扣分惩罚机制详析!
  10. 车来了:精准实时公交
  11. PPT文件不能打印是什么原因
  12. 【Android】JNI调用(完整版)
  13. UML建模(二):基于UML的软件开发过程
  14. python数据可视化案例销售数据_3-5 用python进行数据可视化 朝阳医院销售案例
  15. 十分钟接入iOS 12新特性——Siri Shortcuts
  16. 【历史上的今天】8 月 5 日:微信 5.0 发布;百度上市;LinkedIn 创始人诞生
  17. vsm java_向量空间模型(VSM)在文档相似度计算上的简单介绍
  18. Python构建简单线性回归模型教程
  19. 乐学python慕课答案_乐学软件工程,中国大学MOOC(慕课)答案公众号搜题
  20. PAT顶级 1016 Uniqueness of MST (35分)(判断最小生成树是否唯一)

热门文章

  1. JDK11使用HSDB
  2. Raki的nlp-begginer 提问
  3. java用this-gt;,java基础之十四-&gt;常用类
  4. python樱花树画法图片_武大樱花又盛开,用Python画一棵樱花树
  5. 【题解】Luogu p3478 [POI2008]STA-Station 动态规划
  6. a:active在ios上无效解决方法
  7. 平衡的阵容——洛谷——2880——RMQ
  8. CentOS 6.5安装chromium
  9. 【apicloud问题解决记录】键盘弹出监听处理以及头部底部的黑色闪屏现象
  10. 一个完整的接口技术解决方案(一)