前言:安卓的线程和进程,很多互联网公司在面试的时候的(如果你投的是安卓实习生)必问的,今天系统的整理一下关于安卓进程和线程的知识,希望能帮到有需要的人。
一、安卓的进程:
在开始具体啰嗦前,我们先开看安卓的进程有哪几种,经常用安卓手机的人必然知道两个:前台进程和后台进程。剩下的是空进程和服务进程以及可见进程。
先给大家科普一下一个安卓程序第一次启动的时候到底干了一些什么:
当第一个安卓程序第一次启动的时候,安卓系统会为它分配一个Linux进程和主线程(注意是Linux进程和主线程),该程序所有组件和服务都在这个进程和线程中运行(可以理解为这一块内存)。同时安卓会为每个程序分配一个Linux用户,安卓会尽量保存正在运行的进程,只有当内存不足的时候,安卓才会去释放一些进程以保证有内存资源去给新的进程,也能保证用户当前正在访问的进程有足够的资源去响应用户的事件。
安卓会根据进程中运行的组件类别和组件的状态来判断当前进程的重要性,安卓首先会停止那些不重要的进程,按重要性高从低排序就是:
1.前台进程:
前台进程指的是用户正在使用的进程,它们一般都是最后被停止。如果当内存低到无法运行前台进程时,一般会进行内存调度,中止一些前台进程来保持和用户交互的响应。比如你正在使用QQ和朋友聊天,那么QQ就是前台进程。
那么如何来判断一个进程是前台进程呢?有下面四种情况:
(1)当一个进程运行着一个正在和用户交互的Activity;(也就是Activity的onResume()方法被调用)
(2)进程里有绑定到当前正在和用户交互的Activity的一个service。
(3)进程里有一个service对象,这个service正在执行它的生命周期的回调函数(onCreate(),onStart(),onDestroy())。
(4)进程里有一个正在onReceive()方法的BroadCastReiver对象。
2.可见进程:
可见进程指部分程序界面能够被用户看见,却不在前台与用户交互的进程。例如,我们在一个界面上弹出一个对话框(该对话框是一个新的Activity),那么在对话框后面的原界面是可见的,但是并没有与用户进行交互,那么原界面就是可见进程。
3.服务进程:
服务进程是通过 st