一、 Looper 为什么要使用死循环?
1.1 进程
任意一个app
运行时前会先创建一个进程
,该进程是由 Zygote(孵化器)
fork
出来的,用于装载各种 Activity, Service
等组件。由于Google
有意为之,进程对于上层应用来说是完全透明的,App
程序都是运行在 Android Runtime
。通常情况一个 App 就运行在一个进程中,但是也有很多例外,比如:在 AndroidManifest.xml
中申明了Android:process
属性,或使用 native
代码 fork
进程,这些方式可以让一个app
拥有多个进程
。
1.2 线程
线程对应用来说十分常见,比如每次 new Thread().start
都会创建一个新的线程。该线程与App所在进程之间共享资源,从 Linux 角度来讲进程与线程除了是否资源共享外,并不存在本质的区别,都是一个task_struct
结构体,在CPU
看来进程或线程都是一段可执行的代码,CPU
采用 CFS
调度算法,保证每个task都公平的享有 CPU
时间片用于执行任务。