Activity启动源码分析

Launcher

 1,startActivitySafely
 
 2,startActivity(Intent=FLAG_ACTIVITY_NEW_TASK
 表示要在一个新的Task中启动这个Activity)
 
 
     startActivitySafely(intent, opts.toBundle());
     
     
 public class Launcher {
 
     public static void main(String[] args) 
 
 Activity
 
public void startActivityForResult(Intent intent, int requestCode) {

参数传入-1表示不需要这个Activity结束后的返回结果


public class Instrumentation {监控应用程序和系统的交互

 mInstrumentation.execStartActivity(
 
 
 int result = ActivityManagerNative.getDefault()
 
 由 ActivityManagerNative 服务端)
 
 静态方法获得ActivityManagerProxy实例
 
 ActivityManagerProxy(客户端
 
 通过Binder驱动程序进入到
 ActivityManagerService
 
 
 public int startActivities(IApplicationThread caller, String callingPackage,
            Intent[] intents, String[] resolvedTypes, IBinder resultTo,
            参数Caller为ApplicationThread类型的Binder实体,即Launcher的主线程,
            
            resultTo为一个Binder实体的远程接口,通过它可以获得Launcher这个
            Activity的相关信息
            
            trasact
            
 ActivityManagerNative
 
 onTrasact
 case START_ACTIVITIES_TRANSACTION:
 
 
     int result = startActivities(app, callingPackage, intents, resolvedTypes, resultT
 
 
 public final class ActivityManagerService extends ActivityManagerNative
 
 
 
 
 
 

你可能感兴趣的:(framework)