代码分析
1.代码路径
frameworks/base/core/java/android/app/ActivityThread.java
frameworks/base/services/core/java/com/android/server/am/ActivityManagerService.java
frameworks/base/core/java/android/os/IBinder.java
代码参考:Android Q
2.ActivityThread
public static void main(String[] args) {
······
ActivityThread thread = new ActivityThread();
thread.attach(false, startSeq);
······
}
private void attach(boolean system, long startSeq) {
······
final IActivityManager mgr = ActivityManager.getService();
try {
mgr.attachApplication(mAppThread, startSeq);
} catch (RemoteException ex) {
throw ex.rethrowFromSystemServer();
}
······
}
1.final ApplicationThread mAppThread = new ApplicationThread();
2.private class ApplicationThread extends IApplicationThread.Stub
3.ActivityManagerService.java
public final void attachApplication(IApplicationThread thread, long startSeq) {
······
attachApplicationLocked(thread, callingPid, callingUid, startSeq);
······
}
private final boolean attachApplicationLocked(IApplicationThread thread,
int pid, int callingUid, long startSeq) {
······
try {
AppDeathRecipient adr = new AppDeathRecipient(
app, pid, thread);
thread.asBinder().linkToDeath(adr, 0);
app.deathRecipient = adr;
} catch (RemoteException e) {
app.resetPackageList