Android应用程序(activity)启动过程(三)API28

本文探讨API28版本中Android应用程序Activity的启动过程,与API26的区别主要在于`realStartActivityLocked()`之后的调用。文章从`scheduleTransaction()`开始,详细解释了如何通过`ClientTransaction`、`ActivityThread`的`scheduleTransaction()`方法,以及`TransactionExecutor`的执行流程,最终执行`LaunchActivityItem`和`ResumeActivityItem`,完成Activity的启动及生命周期的恢复。
摘要由CSDN通过智能技术生成

文章基于API28本的activity启动过程,和26版本的启动过程改动不大,主要是在realStartActivityLocked方法之后,修改了activity的调用,读本文之前建议先了解之前版本activity的调用过程,文章将直接讲解主要不同之处。
Android应用程序(activity)启动过程(一)
Android应用程序(activity)启动过程(二)

对接启动过程(二) step 39或 step 50

  1. realStartActivityLocked()方法
                // 启动LaunchActivityItem
                clientTransaction.addCallback(LaunchActivityItem.obtain(new Intent(r.intent),
                        System.identityHashCode(r), r.info,   
                        mergedConfiguration.getGlobalConfiguration(),
                        mergedConfiguration.getOverrideConfiguration(), r.compat,
                        r.launchedFromPackage, task.voiceInteractor, app.repProcState, r.icicle,
                        r.persistentState, results, newIntents, mService.isNextTransitionForward(),
                        profilerInfo));
                final ActivityLifecycleItem lifecycleItem;
                if (andResume) {
                    // 启动 ResumeActivityItem  ActivityLifecycleItem
                    lifecycleItem = ResumeActivityItem.obtain(mService.isNextTransitionForward());
                } else {
                // 否则 启动 PauseActivityItem
                    lifecycleItem = PauseActivityItem.obtain();
                }
                // 利用 mLifecycleStateRequest 执行 resume方法
                clientTransaction.setLifecycleStateRequest(lifecycleItem);

                // Schedule transaction.启动事务
                mService.getLifecycleManager().scheduleTransaction(clientTransaction);

  1. scheduleTransaction()
// ClientLifecycleManager 类
void scheduleTransaction(ClientTransaction transaction) throws
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值