进程、线程和运行在主线程的Service

1. 进程

进程一般指一个执行单元。每个进程都有自己独立的资源和内存空间,其它进程不能任意访问当。同时系统给每个进程分配的内存也会有限制。

2. 线程

线程是CPU调度的基本单位,一个进程可以包含多个线程,也可以只有一个线程,这个线程就是主线程,即UI线程。当系统中线程过多时,系统会通过时间片轮转的方式调度每个线程。只有线程数小于CPU的核心数时,线程才可以并行执行。

同时线程也是一种受限的系统资源,即线程不能无限制的产生,线程的创建、销毁都会有相应的开销。
通常是采用线程池,一个线程池会缓存一定数量的线程,通过线程池可以避免因频繁创建、销毁线程带来的系统开销。

3. service运行在主线程中:

当应用启动时,系统为这个应用开启一个新的进程,这个进程包含一个线程,这个线程叫主线程。默认情况下,一个应用的所有组件都运行在主线程中。主线程也是系统操作UI控件的线程,因此主线程也被称作UI线程。故 service运行在主线程中。

对于service来说,耗时任务,比如网络请求、I/O操作,要在在子线程中执行,否则主线程会被挂起,造成ANR。
可以通过Thread、Handler,在子线程中执行耗时任务,然后在主线程中更新UI;也可以使用BroadcastReceiver。

猜你喜欢

转载自blog.csdn.net/lyl0530/article/details/81877716
今日推荐