activitythread,ActivityThread 翻译
在系统启动时activitythread,SystemServer作为服务入口点加载并启动所有系统服务,包括AMS它首先创建AMS实例,将其注册为系统服务,然后启动AMS的主线程,以处理各种服务请求当应用启动时,AMS接收启动请求并根据包名和类名创建新进程,然后在新进程中启动ActivityThread主线程,初始化应用环境并加载资源接着,AMS调用;最终,ActivityThread会被通知调用destroy方法,完成Activity的销毁2 Result回调机制 如果使用startActivityForResult方法打开一个新的Activity,可以设置返回结果 在新Activity中,通过调用setResult方法设置返回结果其中,resultCode是结果代码,intent可以携带返回数据 当新Activity调用finish方法结束时,它;新进程创建后,会执行ActivityThread的main方法,这是APP进程的主线程入口绑定Application 在ActivityThread的main函数中,会调用attach方法attach方法中,会远程调用AMS的attachApplication方法AMS最后会通过远程调用ActivityThread的bindApplication,发送一个BIND_APPLICATION的消息接收到此消息后,通过handle。
Android Framework是建立在顶层应用与CC++库之间的框架,主要由服务端客户端Linux驱动三部分组成它在APK程序运行过程中起着关键作用,主要通过创建三个线程ActivityThreadApplicationThreadW其中,ActivityThread是UI线程,负责监听并处理消息ApplicationThread与W负责与远方服务器端通信服务器端主;1 View的Framework相关知识 理解View的起源有助于后续分析从ActivityThreadjava开始,通过关键代码vmaddViewdecor, l可以理解三个关键对象vmdecorlvm是通过Activity的getWindowManager方法获取,进一步跟踪可得此对象由Window的getWindowManager方法提供decor是通过获取;我们知道app的启动是从 ActivityThreadmain 方法开始的,所以我们先从 main 看起 main 方法里主要做了三件事 接下来我们看 ActivityThreadattach 方法 attach 方法里主要做里就是调用 ActivityManagergetService 方法返回 IActivityManager 类型的 Binde;每个线程仅允许一个Looper,主线程的Looper在ActivityThreadmain中初始化MessageQueue 存储消息和Runnable的队列,按优先级如时间戳排序与Looper关联,Looper从队列中取出消息并分发给对应Handler消息循环工作流程 创建Looper 在目标线程如主线程调用Looperprepare,初始化当前线程的Looper实例。

主线程中会构造这两个类的对象但是他们不是线程,activitythread你看看继承关系就可以知道ApplicationThread是binder, ActivityThread是一个final类也不是真正的线程如果你用ddms查看某一个进程的所有线程,你会发现它只有一个main thread,当然它可能还有binder thread, jdwp, signal catcher等;在启动流程中,Launcher与Activity Manager ServiceAMS之间进行了通信首先,Launcher通知AMS启动某个应用,并指明是哪个页面然后,Launcher进入暂停状态,等待AMS处理启动请求AMS检查目标应用是否已经在后台运行,如果在后台,则直接启动如果不在,则在新进程中创建ActivityThread对象,并启动其main函数;ActivityThread 有几个比较重要的成员变量,会在创建ActivityThread对象时初始化final ApplicationThread mAppThread = new ApplicationThreadApplicationThread继承自ApplicationThreadNative, 而ApplicationThreadNative又继承自Binder并实现了IApplicationThread接口IApplicationThread继承自IInterface这是一个很明显的;Android Framework主要由服务端客户端Linux驱动三部分组成服务端包括WmS与AmS,分别负责监听与处理与窗口相关的事件和管理Activity关键线程在APK程序运行过程中,Android Framework主要通过创建三个线程来工作ActivityThreadApplicationThreadWActivityThread负责监听并处理消息ApplicationThread与W负责;ActivityThread初始化主线程消息循环调用LooperprepareLoop创建Looper调用Looperloop启动消息队列处理四Application绑定阶段绑定Application流程 新进程创建后,ActivityThread调用bindApplication方法,发送BIND_APPLICATION消息至消息队列handleBindApplication处理消息,调用makeApplication完成以下操;AMS通过Binder机制与新进程中的ActivityThread进行通信启动主线程 ActivityThread创建完成后,AMS会调用其main方法启动该进程的主线程主线程启动后,会进行一系列的初始化操作,包括初始化应用程序的上下文环境加载应用程序的资源等应用程序初始化 ActivityThread会调用Instrumentation的callApplicationOnCreate;当应用启动时,AMS首先接收来自启动器或其他应用的启动请求,该请求包含要启动应用的包名和主Activity的类名创建新进程根据请求中的包名和类名,AMS检查系统中是否存在对应的进程如果不存在,AMS将创建一个新的进程来托管该应用启动ActivityThread主线程在新创建的进程中,AMS启动Act。
5ApplicationThread是ActivityThread的内部类,当ApplicationThread接受到来自AMS的事务后,会将事务直接转交给ActivityThread处理6ActivityThread通过Instrumentation利用类加载器反射进行实例的创建,同时利用Instrumentation回调目标Activity的生命周期介绍几个关键的类InstrumentationInstrumentation 是 Activity。

相关标签 :
程序




