首页
学习
活动
专区
圈层
工具
发布
    • 综合排序
    • 最热优先
    • 最新优先
    时间不限
  • 来自专栏韩曙亮的移动开发专栏

    【Android 启动过程】Activity 启动源码分析 ( AMS -> ActivityThread、AMS 线程阶段 )

    文章目录 一、Activity 启动源码分析 ( AMS | ActivityManagerService ) 1、Instrumentation 调用 AMS 方法 2、ActivityStarter 调用 AMS 方法 3、Process 启动新进程 二、Activity 启动源码分析 ( ActivityStarter ) 1、ActivityStarter.startActivityMayWait () 方法 2、ActivityStarter.startActivity ( 24 参数 ) 方法 3、ActivityStarter.startActivity ( 23 参数 ) 方法 4、ActivityStarter.startActivity ( 9 参数 ) 方法 5、ActivityStarter.startActivityUnchecked 方法 6、ActivityStarter.computeLaunchingTaskFlags( 方法 , 在 ActivityStarter 中的 startActivityMayWait 中 , 调用了 24 个参数的 startActivity 方法 , class ActivityStarter

    2.1K20编辑于 2023-03-29
  • 来自专栏韩曙亮的移动开发专栏

    【Android 插件化】Hook 插件化框架 ( 从 Hook 应用角度分析 Activity 启动流程 二 | AMS 进程相关源码 | 主进程相关源码 )

    源码分析 /frameworks/base/services/core/java/com/android/server/am/ActivityStarter.java a、obtainStarter 方法分析 调用 ActivityStartController 的 obtainStarter 方法 , 得到的是 ActivityStarter 方法 , Activity 的启动是由该 ActivityStarter It is valid until after * {@link ActivityStarter#execute} is invoked. . */ ActivityStarter obtainStarter(Intent intent, String reason) { return mFactory.obtain ().setIntent(intent).setReason(reason); } } b、execute 方法分析 Activity 启动过程很复杂 , 封装在 ActivityStarter

    1.2K10编辑于 2023-03-29
  • 来自专栏木子杂志

    Launcher 启动 activity 流程

    ActivityManagerService.startActivityAsUser()//execute() 【--->ActivityStarter.java】 ActivityStarter.execute () // ActivityStarter.startActivityMayWait() // ActivityStarter.startActivity() // ActivityStarter.startActivityUnchecked

    1.6K20发布于 2020-07-31
  • 来自专栏用户4077185的专栏

    Android | Activity 启动流程分析

    接着调用了obtainStarter ,该方法通过工厂模式创建了 ActivityStarter 对象,如下所示: #ActivityStarter.java static class DefaultFactory //同步池 private SynchronizedPool<ActivityStarter> mStarterPool = new SynchronizedPool<> obtain() { //从同步池中获取 ActivityStarter 对象 ActivityStarter starter = mStarterPool.acquire 对象,该对象创建完成之后,该对象创建完成之后,AMTS 就会将接下来启动 Activity 的操作交给 ActivityStarter 来完成。 #ActivityStarter.java //根据前面传入的参数解析一下必要的信息,并开始启动 Activity int execute() { try { int res;

    1.2K20编辑于 2023-01-30
  • 来自专栏曾大稳的博客

    startActivity时序图

    lauchModle 检测: ActivityStarter.startActivityUnchecked() 绕过AndroidManifest检测: 瞒天过海:使用代理Activity替换原来的

    1.2K30发布于 2018-09-11
  • 来自专栏刘望舒

    Android深入四大组件(六)Android8.0 根Activity启动过程(前篇)

    return res; } } ActivityStarter是Android 7.0新加入的类,它是加载Activity的控制类,会收集所有的逻辑来决定如何将Intent和Flags转换为 ActivityStarter的startActivityMayWait方法调用了startActivityLocked方法,如下所示。 frameworks/base/services/core/java/com/android/server/am/ActivityStarter.java int startActivityLocked frameworks/base/services/core/java/com/android/server/am/ActivityStarter.java private int startActivity frameworks/base/services/core/java/com/android/server/am/ActivityStarter.java private int startActivity

    1.3K70发布于 2018-02-01
  • 来自专栏刘望舒

    Android深入四大组件(一)应用程序启动过程

    frameworks/base/services/core/java/com/android/server/am/ActivityStarter.java ? frameworks/base/services/core/java/com/android/server/am/ActivityStarter.java ? frameworks/base/services/core/java/com/android/server/am/ActivityStarter.java ? 接着又调用startActivityUnchecked方法: frameworks/base/services/core/java/com/android/server/am/ActivityStarter.java

    1.6K81发布于 2018-02-01
  • 来自专栏构建FFmpeg Android播放器

    Android框架简介--Activity--Activity启动

    ActivityA startActivity --> startActivityAsUser -- > mActivityStarter.startActivityMayWait 这里会调用到类 ActivityStarter how an intent and flags should be turned into * an activity and associated task and stack. */ class ActivityStarter 从注释上看,我们了解了ActivityStarter的作用是收集所有的逻辑,用来决定如何启动activity, ActivityStarter又通过ActivityStackSupervisor来管理

    1.1K10编辑于 2022-04-02
  • 来自专栏算法微时光

    activity的启动流程(二)

    It is valid until after * {@link ActivityStarter#execute} is invoked. ().setIntent(intent).setReason(reason); } 跟踪ActivityStarter代码, ActivityStarter这个类看名字就知道它专门负责一个 Activity /** * An interface that to provide {@link ActivityStarter} instances to the controller. * @return an {@link ActivityStarter} */ ActivityStarter obtain(); /** * Recycles a starter for reuse. */ void recycle(ActivityStarter starter

    1.4K20发布于 2020-12-16
  • 来自专栏终身开发者

    SystemUI 开发之通知 Notification 的关键 API(三)

    NotificationRemoteInputManager.Callback.class); mShadeController = Dependency.get(ShadeController.class); final ActivityStarter activityStarter = Dependency.get(ActivityStarter.class); // 用于处理通知相关的各种交互,例如点击通知后跳转个某个应用等交互 mCommandQueue, mAssistManager, mNotificationPanel, mPresenter, mEntryManager, mHeadsUpManager, activityStarter

    2.3K10编辑于 2021-12-08
  • 来自专栏Android相关

    Intent.FLAG_ACTIVITY_CLEAR_TOP与SingleTask的区别

    原因 在ActivityStarter.startActivityUnchecked函数中,在找到要启动的Activity所保存的TaskRecord后,会来处理该标识位: // ActivityStarter.isDocumentLaunchesIntoExisting(launchFlags)) { if (!

    1.5K50发布于 2019-08-08
  • 来自专栏Android 进阶

    BroadcastReceiver 源码分析

    同时交付ActivityStarter处理Intent和Flag等信息,然后再交给ActivityStackSupervisior/ActivityStack处理Activity进栈相关流程。 ActivityStarter:Activity启动的控制器,处理Intent与Flag对Activity启动的影响,具体说来有: 寻找符合启动条件的Activity,如果有多个,让用户选择; 校验启动参数的合法性 bOptions, false, userId, null, "startActivityAsUser");     } 调用了startActivityMayWait方法进入到了ActivityStarter options, ignoreTargetSecurity, componentSpecified, outRecord, inTask,                     reason); } ActivityStarter

    64510发布于 2019-12-26
  • 来自专栏若尘的技术专栏

    Activity启动流程

    在startActivityAsUser方法中,会通过Starter池获取到一个ActivityStarter对象,然后设置一些参数,最后调用execute方法执行Activity的启动。 ActivityStarter 顾名思义,ActivityStarter类就是为了启动Activity的。

    1.2K54发布于 2021-11-21
  • 来自专栏Android 进阶

    Activity 启动源码分析

    同时交付ActivityStarter处理Intent和Flag等信息,然后再交给ActivityStackSupervisior/ActivityStack处理Activity进栈相关流程。 ActivityStarter:Activity启动的控制器,处理Intent与Flag对Activity启动的影响,具体说来有: 寻找符合启动条件的Activity,如果有多个,让用户选择; 校验启动参数的合法性 bOptions, false, userId, null, "startActivityAsUser");     } 调用了startActivityMayWait方法进入到了ActivityStarter options, ignoreTargetSecurity, componentSpecified, outRecord, inTask,                     reason); } ActivityStarter

    1K30发布于 2019-12-26
  • Android应用启动流程源码级解析

    validateIncomingUser, Binder.getCallingPid(), Binder.getCallingUid(), "startActivityAsUser"); // 使用ActivityStarter .setActivityOptions(bOptions) .setUserId(userId) .execute(); } 2.2 ActivityStarter 执行启动 源码位置: frameworks/base/services/core/java/com/android/server/wm/ActivityStarter.java // ActivityStarter.java

    39311编辑于 2025-11-30
  • 来自专栏若尘的技术专栏

    一文带你读懂 Activity 启动流程

    在startActivityAsUser方法中,会通过Starter池获取到一个ActivityStarter对象,然后设置一些参数,最后调用execute方法执行Activity的启动。 ActivityStarter 顾名思义,ActivityStarter类就是为了启动Activity的。

    1.8K65编辑于 2021-12-15
  • 来自专栏Android 进阶

    Android ANR与OOM

    同时交付ActivityStarter处理Intent和Flag等信息,然后再交给ActivityStackSupervisior/ActivityStack处理Activity进栈相关流程。 ActivityStarter:Activity启动的控制器,处理Intent与Flag对Activity启动的影响,具体说来有: 寻找符合启动条件的Activity,如果有多个,让用户选择; 校验启动参数的合法性 bOptions, false, userId, null, "startActivityAsUser");     } 调用了startActivityMayWait方法进入到了ActivityStarter options, ignoreTargetSecurity, componentSpecified, outRecord, inTask,                     reason); } ActivityStarter

    1.1K10发布于 2019-12-26
  • 来自专栏刘望舒

    Android解析ActivityManagerService(二)ActivityTask和Activity栈管理

    接下来通过系统源码来查看FLAG的应用,在Android深入四大组件(一)应用程序启动过程(后篇)中讲过,根Activity启动时会调用AMS的startActivity方法,经过层层调用会调用ActivityStarter frameworks/base/services/core/java/com/android/server/am/ActivityStarter.java ? frameworks/base/services/core/java/com/android/server/am/ActivityStarter.java ?

    2.2K90发布于 2018-02-01
  • 来自专栏Android相关

    ActivityManagerService--startActivity的流程

    ActivityStarter.startActivityMayWait(System_Server进程) 通过Instrumentation.execStartActivity经过IPC调用,调用到AMS 的startActivity,进入后该函数后,会调用到ActivityStarter.startActivityMayWait 通过PackageManagerService解析intent找到对应的ActivityInfo sourceRecord, voiceSession, voiceInteractor, startFlags, true, options, inTask, outActivity); ActivityStarter.startActivityUnchecked

    1.6K30发布于 2019-07-25
  • 来自专栏码上积木

    谈AMS的诞生和使用

    在构造函数中,主要初始化了一些对象,比如Context、ActivityThrad、Handler、CPU监控线程,还有一些后文要用到的ActivityStackSupervisor、ActivityStarter 接着看启动流程,通过Binder调用到了AMS的startActivity方法,然后会调用到ActivityStarter的startActivity方法,在这个方法中,我们发现一个新的类: //ActivityStarter.java

    1.3K50发布于 2021-01-25
领券