1, Android 中每个进程只有一个ProcessState, 用来表示进程的状态
源码:
sp<ProcessState> ProcessState::self()
{
if (gProcess != NULL) return gProcess;
AutoMutex _l(gProcessMutex);
if (gProcess == NULL) gProcess = new ProcessState;
return gProcess;
}
调用该函数时需要使用 new ProcessState, 因此会直接调用ProcessState()的构造函数:
ProcessState::ProcessState()
: mDriverFD(open_driver())
, mVMStart(MAP_FAILED)
, mManagesContexts(false)
, mBinderContextCheckFunc(NULL)
, mBinderContextUserData(NULL)
, mThreadPoolStarted(false)
, mThreadPoolSeq(1)
通过open_driver() 打开/dev/binder 设备; 并且mmap() 映射一块内存,这样该进程就与binder建立了通信。
因此能保证在调用 ProcessState::self()时只有一个进程gProcess进程
2, 创建新的thread:
ProcessState::self()->startThreadPool();
---------------- spawnPooledThread(true);
------------ new PoolThread(true); ---------> run() ----- 启动该进程。
3,