Android-进程理解/进程的优先级别

时间:2023-12-31 12:10:50

进程理解

Android系统最小的控制单元是:进程 process

应用/CPU最小的控制单元是:线程 thread

Android-进程理解/进程的优先级别

一个应用一个 process 进程

一个应用一个 package(包是唯一的)

一个应用一个 dalvik vm(一个应用一个dalvik vm,这样才能保证数据的安全性)

一个应用一个 user(一个应用一个用户,因为Linux把每一个进程看作一个用户,进程与进程之间 权限验证很严格)


在Android4.4之前,每一个进程是 dalvik vm 模式,这种方式长时间运行会导致性能低

Android-进程理解/进程的优先级别

ART 模式:Android 5.0后,这种模式之后,以后的安卓就是苹果的性能

Android-进程理解/进程的优先级别


进程的优先级别

当Android系统内存空间不足的时候,系统会自动杀进程,怎么杀进程呢,就是按照进程的优先级别来杀的,优先级别 最低的 最先杀

Android-进程理解/进程的优先级别

1.前台进程:

      1.1 可以看到的/可以操作的/属于前台进程

      1.2 A应用 去绑定 B应用的服务,然后B应用是回到桌面状态的,B应用也属性前台进程

      1.3 只要是Service在执行生命周期方法的时候,也属于前台进程

      1.4 只要是BroadcastReceiver-->onReceiver()生命周期方法的时候,也属于前台进程

2.可视进程:

      2.1 当A应用 被 B应用挡住来一部分, A应用可以看到,却不能操作,A应用属于可视进程

      2.2 当A应用 被 B应用挡住来一部分, A应用可以看到,却不能操作,同时A应用绑定了S应用的Service,那么S应用和A应用都属于可视进程

3.服务进程:

      3.1 当C应用启动了一个Service,C应用回到桌面,C应用属于服务进程

4.后台进程:

      4.1 当D应用的任务栈还有Activity应用,D应用回到桌面,D应用属于后台进程(直接按了Home键盘)

5.空进程:

      5.1 当F应用的任务栈被弹栈弹完了,没有一个任务栈了,F应用属于空进程(不停的按Back键) 

后台进程演示:

Android-进程理解/进程的优先级别

空进程演示:

 Android-进程理解/进程的优先级别


进程的提升

进程的提升:例如:在之前的的博客,Android-bindService本地服务-音乐播放(后台播放)-下,介绍了,如何把服务进程提升为前台进程

为什么要把服务进程提升为前台进程?

答:因为把服务进程提升为前台进程,是最稳定的(例如:一些山寨应用播放器,播放过程中,系统内存不足,应用突然被系统回收了,如果提升为前台进程,就不会被回收了)

Service:

// id=通知到唯一标示  notification=通知
startForeground(1, builder1.getNotification());

Activity:

// 既然是后台播放,就是要把当前Activity切换到后台
moveTaskToBack(true);

假设 当系统内存不足的时候,都是后台进程,系统会怎么杀

Android-进程理解/进程的优先级别