在介绍Android系统的进程和线程之前,我们先简单了解一下,什么是进程?什么是线程?按照操作系统中的描述,线程是CPU调度的最小单元,同时线程是一种有限的系统资源。而进程一般指一个执行单元,在pc和移动设备中指的的是一个程序或者一个应用。一个进程可以包含多个线程,因此进程和线程是包含和被包含的关系。
一、Android中为什么要开启多线程?
不管是在pc上的程序,还是移动系统中的应用,简单情况下只有一个线程,叫主线程,在移动系统中也可以叫做UI线程,当我们要进行大量的耗时任务的时候,因为是在一个线程中执行的任务,任务都是串行的,所以会导致主线程的堵塞,会导致程序暂时无法响应。而在Android系统中,只有UI线程可以刷新UI,这样一来就会导致ANR(Application not responding),即用户无响应。解决这个问题,就需要把一些耗时任务放在子线程中执行,然后通过Android的消息机制通知主线程刷新UI即可。
二、Android系统进程的简单整理
我们先来看一张系统启动架构图。
image.png
从架构图上我们可以看到,安卓系统中主要包含了这几个进程:Init进程、Zygite进程、System Server进程、和应用进程。
Init进程:linux中的根进程,而Andoid系统是基于linux系统的,也可以当做Andrid系统中启动的第一个进程。
Zygote进程:所有Java进程的父进程,由Init孵化。
System Server进程:System Server进程由Zygote进程孵化,在这个进程中主要用于启动系统中的各项服务,如:ActivityManagerService、WindowManagerService等。
应用进程:当我们在启动我们编写的一个应用客户端的时候,比如启动一个APP,就会启动一个应用进程。有自己的虚拟机和运行环境。
网友评论