一、ActivityThread 、二、ActivityThread 绑定 ApplicationThread、三、AMS attachApplication -> attachApplicationLocked、四、ApplicationThread.bindApplication、五、H 处理 BIND_APPLICATION 消息、六、ActivityThread.handleBindApplication、七、LoadedApk.makeApplication、
原创 2022-03-08 09:41:15
664阅读
Activity的启动过程是一个很复杂的过程,涉及了Instrumentation ActivityThread AMS(ActivityManagerService)等类。 ActivityThread和AMS之间的通信是跨进程的通信,采用的机制是Binder机制,具体就是利用ApplicationThread binder接口来完成。ApplicationThread是ActivityThre
转载 2023-07-09 23:14:10
72阅读
##概述: 从应用的启动流程来看,Activity只是一段程序的代码,它既不是程序的入口,也不是程序的必要流程.只是程序运行中的一个场景,一个组件.是基于Context扩展了特定功能接口的一个前台运行的场景. AMS通过ApplicationThread的引用代理,远程调用ApplicationThread的服务端,并通过ApplicationThread的服务端发送消息给应用程序主线程从而控制A
一、概述二、ActivityThread.main() 方法2.1 执行 ActivityThread.attach() 操作2.2 在 main() 最后为何要抛出 RuntimeException 异常呢?又是在哪里被捕获呢?2.3 小结三、ActivityThread、ApplicationThread、H(Handler)之间的关系四、类 ApplicationThread4.1 代码分
1. ActivityThread启动Activity的过程通过前篇的介绍,我们知道目前的代码逻辑运行在应用程序进程中。先来查看ActivityThread启动Activity的过程的时序图。我们接着来查看ApplicationThread的scheduleLaunchActivity方法,其中ApplicationThread是ActivityThread的内部类,应用程序进程创建后会运行代表主
转载 6月前
16阅读
1. ActivityThread启动Activity的过程通过前篇的介绍,我们知道目前的代码逻辑运行在应用程序进程中。先来查看ActivityThread启动Activity的过程的时序图。我们接着来查看ApplicationThread的scheduleLaunchActivity方法,其中ApplicationThread是ActivityThread的内部类,应用程序进程创建后会运行代表主
可以看到mAppThread是ApplicationThread类型 也是一个binder对象。 (这里的运行已经是在另外的binder的服务端(ActivityManagerSer
原创 2024-08-05 09:46:23
61阅读
Activity 启动过程: startActivity()-> Instrumentation.execStartActivity()-> Binder->ActivityManagerService-> Zygote fork app -> Binder -> ApplicationThread.scheduleLaunchActivity() - >
app启动过程 1. 点击图标启动 2. LauncherApp通知AMS进行启动,LauncherActivity onPause 3. AMS新建app进程,创建ActivityThread,创建ApplicationThread
尝试通过意图调用新活动时收到错误消息:java.lang.NullPointerException: Attempt to invoke virtual method 'android.app.ActivityThread$ApplicationThread android.app.ActivityThread.getApplicationThread()' on a null object re
1.Android Binder 作为 IPC 机制原理和面试回答    1.Activity中最终到startActivityForResult()(mMainThread.getApplicationThread()传入了一个ApplicationThread检查APT) ->Instrumentation#execStartActivit
    Step 17. ApplicationThread.scheduleBindService          这个函数定义在frameworks/base/core/java/android/app/ActivityThread.java文件中: public final c
概述上篇文章说到目标应用的Overlay包路径被更新到了目标应用ApplicationInfo之后,就会将更新之后的ApplicationInfo传给APP进程,本篇继续来看APP进程的处理。ApplicationThread.scheduleApplicationInfoChangedpublic void scheduleApplicationInfoChanged(ApplicationIn
转载 2023-08-22 13:06:14
124阅读
标签: Activity启动流程 Activity启动时间优化 前一篇文章有介绍Launcher请求AMS过程,参考文章- 《Activity 启动流程(一)》 本文将介绍AMS到ApplicationThread的调用过程 ActivityManagerService.startActivity()@Override public final int startActivity(IApp
ActivityManagerService启动Activity的过程大致如下图所示:在这个图中,ActivityManagerService和ActivityStack位于同一个进程中,而ApplicationThread和ActivityThread位于另一个进程中。其中,ActivityManagerService是负责管理Activity的生命周期的,ActivityManagerServ
ApplicationThread && H ActivityThread ActivityThread 应用程序的入口 ViewRootImpl---->负责View的测量绘制 DectorView --->PhoneWindow的内部类,是一个应用程序程序窗体(Window)中视图的根布局(DectorView是一个FrameLayout) (
转载 2024-07-04 10:54:41
48阅读
一、Activity的启动过程ActivityManagerService和ActivityStack位于同一个进程中,而ApplicationThread和ActivityThread位于另一个进程中。其中,ActivityManagerService是负责管理Activity的生命周期的,ActivityManagerService还借助ActivityStack是来把所有的Activity按
转载 6月前
24阅读
Android view绘制流程详解分为两部分:ViewTree的生成 View的绘制 ViewTree的生成类的介绍:ActivityThread:它是Activity的一个主线程,是main入口。其中有个内部类ApplicationThread extends ApplicationNative extends Binder,当ApplicationNative通过binder通信在onTra
   Android应用程序的入口函数是ActivityThread.main(),该函数不仅创建了ActivityThread实例以及消息循环机构,而且创建了ApplicationThread实例,通过此实例向ActivityManagerService(AMS)提供IApplicationThread接口,AMS正是通过该接口调度和管理Activity。 &nb
转载 2023-07-26 04:21:20
83阅读
1. ActivityThread功能主线程的执行(相当于普通Java程序的main入口函数),并根据AMS的要求(通过IApplicationThread接口,AMS为Client、ActivityThread.ApplicationThread为Server)负责调度和执行activities、broadcasts和其它操作。    在Android系统中,在默认
转载 2024-03-04 20:01:14
18阅读
  • 1
  • 2