首页 > 系统相关 >android 进程管理

android 进程管理

时间:2022-12-09 17:03:20浏览次数:32  
标签:管理 oom 程序 前台 进程 android adj Android


  • 系统会对进程的重要性进行评估,并将重要性以“oom_adj”这个数值表示出来,赋予各个进程;(系统会根据“oom_adj”来判断需要结束哪些进程,一般来说,“oom_adj”的值越大,该进程被系统选中终止的可能就越高)(请发邮件到[email protected]获得翻强软件。)
  • 前台程序的“oom_adj”值为0,这意味着它不会被系统终止,一旦它不可访问后,会获得个更高的“oom_adj”,作者推测“oom_adj”的值是根据软件在LRU列表中的位置所决定的;
  • Android不同于Linux,有一套自己独特的进程管理模块,这个模块有更强的可定制性,可根据“oom_adj”值的范围来决定进程管理策略,比如可以设定“当内存小于X时,结束“oom_adj”大于Y的进程”。这给了进程管理脚本的编写以更多的选择。
  • Android将进程分为六大类:

  • 前台进程(foreground):目前正在屏幕上显示的进程和一些系统进程。举例来说,Dialer Storage,Google Search等系统进程就是前台进程;再举例来说,当你运行一个程序,如浏览器,当浏览器界面在前台显示时,浏览器属于前台进程(foreground),但一旦你按home回到主界面,浏览器就变成了后台程序(background)。我们最不希望终止的进程就是前台进程。
  • 可见进程(visible):可见进程是一些不在前台,但用户依然可见的进程,举个例来说:widget、输入法等,都属于visible。这部分进程虽然不在前台,但与我们的使用也密切相关,我们也不希望它们被终止(你肯定不希望时钟、天气,新闻等widget被终止,那它们将无法同步,你也不希望输入法被终止,否则你每次输入时都需要重新启动输入法)
  • 次要服务(secondary server):目前正在运行的一些服务(主要服务,如拨号等,是不可能被进程管理终止的,故这里只谈次要服务),举例来说:谷歌企业套件,Gmail内部存储,联系人内部存储等。这部分服务虽然属于次要服务,但跟一些系统功能依然息息相关,我们时常需要用到它们,所以也不希望他们被终止
  • 后台进程(hidden):虽然作者用了hidden这个词,但实际即是后台进程(background),就是我们通常意义上理解的启动后被切换到后台的进程,如浏览器,阅读器等。当程序显示在屏幕上时,它所运行的进程即为前台进程(foreground),一旦我们按home返回主界面(注意是按home,不是按back),程序就驻留在后台,成为后台进程(background)。后台进程的管理策略有多种:有较为积极的方式,一旦程序到达后台立即终止,这种方式会提高程序的运行速度,但无法加速程序的再次启动;也有较消极的方式,尽可能多的保留后台程序,虽然可能会影响到单个程序的运行速度,但在再次启动已启动的程序时,速度会有所提升。这里就需要用户根据自己的使用习惯找到一个平衡点
  • 内容供应节点(content provider):没有程序实体,仅提供内容给别的程序去用的,比如日历供应节点,邮件供应节点等。在终止进程时,这类程序应该有较高的优先权
  • 空进程(empty):没有任何东西在内运行的进程,有些程序,比如BTE,在程序退出后,依然会在进程中驻留一个空进程,这个进程里没有任何数据在运行,作用往往是提高该程序下次的启动速度或者记录程序的一些历史信息。这部分进程无疑是应该最先终止的。

     以Windows习惯和思想用Android人,总要习惯性的装个Taskkiller或者高级任务管理器,时不时的就看看还剩多少RAM。下面就来讲讲 Android进程运作机制以及为何无需进程管理器。在   Android里,进程和程序是两回事,程序可以一直保留在系统里,但是没有任何进程在后台“运行”,也不消耗任何系统资源。所有的程序保留在内存中,所有可以更快的启动回到它之前的状态。当你的内存用完了,系统会自动帮你杀掉你不用的任务。

Android 采取了一种有别于Linux的进程管理策略,有别于Linux的在进程活动停止后就结束该进程,Android把这些进程都保留在内存中,直到系统需要更多内存为止。这些保留在内存中的进程通常情况下不会影响整体系统的运行速度,并且当用户再次激活这些进程时,提升了进程的启动速度。

当你在Android系统中退出一个程序之后,系统将标记此程序,放置于RAM中,只占用RAM空间,并不消耗CPU运算,举个例子,你用UC,彻底退出它,下次将耗费超过6秒钟启动同时消耗更多电力,但是用小房子建至于后台,可以瞬间启动,它意味着你可以快速打开之前打开的软件,回到之前的位置。所以 Android很有效的使用RAM,很多用户看到他们的RAM满了,就认为拖慢了他们的电话。而实际上,是你的CPU,当你的软件真正运行时用到的东西,才是拖慢手机的瓶颈。用惯Windows的人总要用进程管理器去杀掉程序,这样做,只会使得下次打开的时候耗费更多电力,因为,重新打开程序,你实际上是在用CPU资源来做这件事。

标签:管理,oom,程序,前台,进程,android,adj,Android
From: https://blog.51cto.com/u_15907753/5926280

相关文章

  • android webView 文字、图片分别加载。乱码问题
     1.加载url前,设置图片阻塞1.webSettings.setBlockNetworkImage(true);2.加载完毕后,关闭图片阻塞1.publicvoidonPageFinished(WebViewview,Stringurl){2.......
  • Android Bitmap和Drawable
    一、相关概念1、Drawable就是一个可画的对象,其可能是一张位图(BitmapDrawable),也可能是一个图形(ShapeDrawable),还有可能是一个图层(LayerDrawable),我们根据画图的需求,创建相应的......
  • Android类库打包方法探究
    众所周知,Android应用使用ADT打包成apk,apk中包含了运行程序所需要的一切,包括:class、asset、res、AndroidManifest.xml等。而对于类库项目(libraryproject),ADT生成的jar......
  • android打开系统联系人界面
    在android应用程序的开发中,经常要实现的一个功能是调用系统自带的联系人界面,做到选择人之后,取得相应的名称和号码,并返回。android2.0前后实现方式上也有一定的差别:主要是2.0......
  • android静默安装探讨(申请加精)
     1)在网上搜寻该问题的解决方法,且查阅android开发文档,没有发现可以实现该功能的显示API调用,网络上很多人请教同样的问题,但都没有能够实现解答;说是android为了用户的安全,......
  • Zabbix与乐维监控对比分析(三)——对象管理篇
    在前面的文章中,我们详细介绍了Zabbix与乐维监控在架构、性能、Agent管理、自动发现、权限管理等方面的对比分析,本篇是Zabbix对比乐维监控专题系列文章的第三篇——对象管理......
  • 设计一个类似Window的任务管理器
     Android并没有提供提供任务管理器程序,无从得知后台有哪些在运行。本范例是通过ActivityManager.getRunningTasks方法来取得正在运行中的工作程序,并使用ListView来显示。 ......
  • android之屏幕方向改变以及onConfigurationChanged事件
    注意:onConfigurationChanged事件并不是只有屏幕方向改变才可以触发,其他的一些系统设置改变也可以触发,比如打开或者隐藏键盘。当我们的屏幕方向发生改变时,就可以触发onConfig......
  • Android Studio工程目录结构分析(一)
    AndroidStudio工程目录我们这里以一个简单的HelloWorld工程来分析:1、.gradle和.idea     这两个目录下放置的都是AndroidStudio自动生成的一些文......
  • Android内存优化(使用SparseArray和ArrayMap代替HashMap)
    在Android开发时,我们使用的大部分都是Java的api,比如HashMap这个api,使用率非常高,但是对于Android这种对内存非常敏感的移动平台,很多时候使用一些java的api并不能达到更好的性......