您的位置:首页 > 财经 > 金融 > 外贸流程图片_长沙招聘网站有哪些_google chrome浏览器_推广公司运营模式

外贸流程图片_长沙招聘网站有哪些_google chrome浏览器_推广公司运营模式

2025/3/9 21:23:42 来源:https://blog.csdn.net/xhf_123/article/details/145735279  浏览:    关键词:外贸流程图片_长沙招聘网站有哪些_google chrome浏览器_推广公司运营模式
外贸流程图片_长沙招聘网站有哪些_google chrome浏览器_推广公司运营模式

 Launcher 进程点击 icon 后启动 Activity

// 1. Launcher 进程通过 Binder IPC 调用 AMS
startActivity() -> IActivityManager.startActivity()

Binder 通信通知 system_server 进程启动进程 

//  system_server 进程启动 Activity 时的处理
public final int startActivity(...) {synchronized (this) {// 1. 创建启动记录final ActivityRecord r = new ActivityRecord(...);// 2. 检查目标进程ProcessRecord app = getProcessRecordLocked(r.processName);if (app == null || app.thread == null) {// 3. 将启动请求加入等待队列mPendingActivityLaunches.add(new PendingActivityLaunch(r, sourceRecord, startFlags));// 4. 启动新进程startProcessLocked(r.processName, r.info, true, 0, "activity", r.intent.getComponent(), false, false, false);}}
}

socket 通知 Zygote 进程 fork 新APP 进程创建ActivityThread

//APP 进程
public class ActivityThread {public static void main(String[] args) {// 1. 准备 LooperLooper.prepareMainLooper()// 2. 创建 ActivityThread 实例ActivityThread thread = new ActivityThread()// 3. 建立与 AMS 的 Binder 通信thread.attach(false)// 4. 开启消息循环Looper.loop()}private void attach(boolean system) {// 5. 创建 ApplicationThread 实例final ApplicationThread appThread = new ApplicationThread()// 6. 通知 AMS 进程已就绪IActivityManager.attachApplication(appThread)}
}

system_server 进程通知APP创建 Application 

// system_server 进程AMS 调用应用进程的 ApplicationThread
class ActivityManagerService {// 第一次调用入口:ActivityThread 的 attach 触发public final void attachApplication(IApplicationThread thread) {synchronized (this) {int callingPid = Binder.getCallingPid();attachApplicationLocked(thread, callingPid);}}    private void attachApplicationLocked(IApplicationThread thread) {// 处理等待队列中的 ActivityprocessPendingActivityLaunches()// 通过 Binder 调用应用进程的 bindApplicationthread.bindApplication(...)}private void processPendingActivityLaunches() {// 等待 Application 创建完成if (app.thread != null && app.isReady()) {// 发起 Activity 创建thread.scheduleLaunchActivity(...)} else {// 加入等待队列mPendingActivityLaunches.add(...)}}// 第二次调用入口:ApplicationThread 完成 bindApplication 后回调public final void bindApplicationComplete(IApplicationThread thread) {synchronized (this) {// 再次调用 attachApplicationLockedattachApplicationLocked(thread, Binder.getCallingPid());}}
}

APP创建 Application

// ApplicationThread 接收调用
class ApplicationThread extends IApplicationThread.Stub {// 处理 Application 启动public final void bindApplication(...) {// 发送绑定应用消息到主线程sendMessage(H.BIND_APPLICATION, data)}// 处理 Activity 启动public final void scheduleLaunchActivity(...) {sendMessage(H.LAUNCH_ACTIVITY, r);}
}

 Application创建完成后 告知 AMS 完成后并创建 Activity

// ActivityThread 处理消息
class ActivityThread {class H extends Handler {public void handleMessage(Message msg) {switch (msg.what) {case BIND_APPLICATION:handleBindApplication(...);break;case LAUNCH_ACTIVITY:handleLaunchActivity(...);break;}}}private void handleBindApplication(AppBindData data) {// 创建 Application// 调用 Application.onCreate()IActivityManager.bindApplicationComplete(this);}private void handleLaunchActivity(ActivityClientRecord r) {// 1. 创建 Activity 实例Activity activity = performLaunchActivity(r);// 2. 调用生命周期方法handleResumeActivity(r.token);}private Activity performLaunchActivity(ActivityClientRecord r) {// 1. 创建 ContextContextImpl appContext = createBaseContextForActivity(r);// 2. 创建 Activity 实例activity = mInstrumentation.newActivity(...);// 3. 关联 Contextactivity.attach(appContext, ...);// 4. 调用 onCreateactivity.onCreate(null);return activity;}
}

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com