一、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            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-09-11 21:23:15
                            
                                137阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            一、概述二、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的内部类,应用程序进程创建后会运行代表主            
                
         
            
            
            
            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() - >            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-08-22 16:44:52
                            
                                16阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            app启动过程
1. 点击图标启动
2. LauncherApp通知AMS进行启动,LauncherActivity onPause
3. AMS新建app进程,创建ActivityThread,创建ApplicationThread            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2023-08-02 07:53:52
                            
                                161阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            尝试通过意图调用新活动时收到错误消息: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            
                
                    
                        
                                                            
                                                                        
                                                                                        原创
                                                                                    
                            2011-09-07 00:58:00
                            
                                827阅读
                            
                                                                             
                 
                
                             
         
            
            
            
            概述上篇文章说到目标应用的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            
                
                    
                        
                                                            
                                                                        
                                                                                        转载
                                                                                    
                            2024-10-20 18:04:02
                            
                                30阅读
                            
                                                                             
                 
                
                                
                     
                                    
                             
         
            
            
            
            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按            
                
         
            
            
            
            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阅读
                            
                                                                             
                 
                
                                
                    