综述
进程指的是Process,线程指的是Thread。
进程
UID和PID
每一个应用有一个UID,相当于Linux中的一个用户。每一个PID可以对应多个PID(进程号)。正常情况下,每一个应用都运行在自己的用户空间中,不能访问其他应用的数据。
一个应用包含多个进程
在一个APP中开启多个进程,可以通过在Androidmanifest中相应的组件中添加android:preocess属性,如果以:开头,那么这个进程就是应用的私有进程,如果不,那么其他应用可以设置sharedUserID跑在这个进程中。
一个应用包含多个进程的影响
- 全局变量和单例模式失效
- 创建多个Application
- 线程同步机制完全失效
多个应用跑在一个进程
满足以下两个条件的应用可以跑在同一进程,这样就可以互相访问数据了。
1. Androidmanifest文件根标签下的sharedUserId相同
2. 签名相同
主线程
- 主线程又叫做UI线程,这个线程专门用于更新UI,在这个线程中绝对不能进行耗时操作,否则会造成ANR错误。
- 为了防止ANR错误,一些耗时的操作需要放到其他线程中,然后再调用handler来更新UI。这个具体的方法可以参看Android消息处理机制中已经说的很清楚了