Android - 进程
创始人
2024-03-26 00:01:07
0

一、概念

在 Manifest 中对 Application或四大组件设置 android:process 属性可以为其分配独立的进程,同时设置了以组件属性为准。属性值(进程名称)可以随意定义,":xxx"以冒号开头表示进程私有其他APP无法访问,进程名称变成"包名:xxx"。

相同点不同点
进程 Process线程 Thread
-程序的一个运行实例。CPU调度的基本单位。
APP在启动的时候就开启了一个进程,默认情况下一个APP的所有组件都运行在同一进程和线程中。进程是包名。线程是主线程(UI进程)。
都是任务栈结构。进程间相互独立具有独立的资源空间。同一进程的各线程间资源共享。
-在 MainiFest 中对 Application 或四大组件进行 android:process 属性设置可以为其分配进程。线程不是越多越好,最好是CPU个数+1。

二、重要级别

一个进程的优先级是可以变化的,当可用内存低的时候重要性低的进程先被杀死,前台进程 > 可视进程 > 服务进程 > 后台进程 > 空进程。

2.1 前台进程  Foreground Process

前台进程为数不多,只有在内存不足以支持它们同时继续运行这一万不得已的情况下,系统才会终止它们。 此时,设备往往已达到内存分页状态,因此需要终止一些前台进程来确保用户界面正常响应,这就需要依靠系统的调度。

用户当前操作所必需的进程。1.正在交互的 Activity,即处于 onResume() 状态。
2.当某个 Service 绑定正在交互的 Activity。
3.Service被主动调用为前台,即调用了 startForeground() 函数。
4.Service正在执行 onCreate()、onStart()、onDestroy()。
5.BroadcastReceiver 正在执行 onReceive()。

2.2 可视进程 Visible Prcess

可见进程被视为是极其重要的进程,除非为了维持所有前台进程同时运行而必须终止,否则系统不会终止这些进程。

不在交互但仍然可见的进程。1.Activity无法交互但仍然可见,即处于 onPause() 状态。
2.绑定到可见(前台)Activity 的 Service。

2.3 服务进程 Service Process

通过 startService() 方法启动的service,它不属于上面提到的2种更高重要性,所在的进程虽然对用户不是直接可见,但执行了用户非常关注的任务(比如播放mp3,从网络下载数据)。只要前台进程和可见进程有足够的内存,系统不会回收他们。 

2.4 后台进程 Background Process

不可见的activity(即处于 onStop() 状态)。这些进程对用户体验没有直接的影响,可以在服务进程、可见进程、前台进程需要内存的时候回收。通常,统中会有很多不可见进程在运行,他们被保存在 LRU (least recently used) 列表中,以便内存不足的时候被第一时间回收。如果一个 activity 正确的执行了它的生命周期,关闭这个进程对于用户体验没有太大的影响。

2.4 空进程 Empty process

不含任何活动组件的进程。目的是用作缓存,以缩短下次在其中运行组件所需的启动时间。 为使总体系统资源在进程缓存和底层内核缓存之间保持平衡,系统往往会终止这些进程。

三、面试

如果App还存在缓存进程,这个时候启动App,应用Application的onCreate方法会执行吗?

点击返回键后系统执行 MainActivity 的 onDestory(),这个时候APP进程为缓存进程,下次启动APP会发现 Application 的 onCreate() 并不会执行,MainActivity的生命周期都会正常执行,这是因为从缓存进程启动APP,系统已经缓存了很多信息,很多数据并不会被销毁,onCreate() 中初始化的那些内容还在,方便用户下次快速启动。利用这一特性,我们的App首次启动速度一般为5-600ms,退出App后存在缓存进程的情况下,每次启动的速度一般为2-300ms,算是某种程度上提升了App的启动时间。

相关内容

热门资讯

喜欢穿一身黑的男生性格(喜欢穿... 今天百科达人给各位分享喜欢穿一身黑的男生性格的知识,其中也会对喜欢穿一身黑衣服的男人人好相处吗进行解...
发春是什么意思(思春和发春是什... 本篇文章极速百科给大家谈谈发春是什么意思,以及思春和发春是什么意思对应的知识点,希望对各位有所帮助,...
网络用语zl是什么意思(zl是... 今天给各位分享网络用语zl是什么意思的知识,其中也会对zl是啥意思是什么网络用语进行解释,如果能碰巧...
为什么酷狗音乐自己唱的歌不能下... 本篇文章极速百科小编给大家谈谈为什么酷狗音乐自己唱的歌不能下载到本地?,以及为什么酷狗下载的歌曲不是...
家里可以做假山养金鱼吗(假山能... 今天百科达人给各位分享家里可以做假山养金鱼吗的知识,其中也会对假山能放鱼缸里吗进行解释,如果能碰巧解...
华为下载未安装的文件去哪找(华... 今天百科达人给各位分享华为下载未安装的文件去哪找的知识,其中也会对华为下载未安装的文件去哪找到进行解...
四分五裂是什么生肖什么动物(四... 本篇文章极速百科小编给大家谈谈四分五裂是什么生肖什么动物,以及四分五裂打一生肖是什么对应的知识点,希...
怎么往应用助手里添加应用(应用... 今天百科达人给各位分享怎么往应用助手里添加应用的知识,其中也会对应用助手怎么添加微信进行解释,如果能...
苏州离哪个飞机场近(苏州离哪个... 本篇文章极速百科小编给大家谈谈苏州离哪个飞机场近,以及苏州离哪个飞机场近点对应的知识点,希望对各位有...
客厅放八骏马摆件可以吗(家里摆... 今天给各位分享客厅放八骏马摆件可以吗的知识,其中也会对家里摆八骏马摆件好吗进行解释,如果能碰巧解决你...