2024年鸿蒙最全Activity的生命周期和启动模式详解(3),2024年最新HarmonyOS鸿蒙工程师面试题

img
img

网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。

需要这份系统化的资料的朋友,可以戳这里获取

一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!

生命周期流程图

拓展问题:
1.onStart和onResume,onPause和onStop有什么实质上的不同?

onStart 和 onStop 是从 Activity 是否可见角度来回调的,而 onResume 和 onPause 是从Activity是否位于前台来回调的。

2.A 启动 B,那么 B 的 onResume 和 A 的 onPause 哪个先执行?

结论:A 先执行 onPause() 方法,紧接着 B 执行 onCreate() -> onSatar() -> onResume() 方法,接着执行 A的 onStop()

原因:

启动 Activity 的请求有 Instrumentation 通过 Binder 接口向 AMS 发送请求,AMS 内部维护着一个 ActivityStack 并负责栈内 Activity 的状态同步,接着 AMS 通过 IApplicationThread( 位于当前应用进程内) 的 Binder 接口去同步 Activity 的状态从而完成生命周期方法的调用。

调用 ApplicationThread.scheduleLaunchActivity 通过 handle.sendMessage 通知 ActivityThread 完成新Activity 的 onCreate,onStart,onResume的调用过程。

ActivtyStack.resumeTopActivityInnerLocked();//
---TaskDisplayArea.pauseBackStacks();//暂停所有堆栈或仅后堆栈中的所有活动
----ActivtyStack.startPausingLocked();//开始暂停当前处于 resumed 的活动
------ActivityStackSupervisor.realStartActivityLocked();

.... app 进程
ActivtyThread.handleLaunchActivity(){
----ActivtyThread.performLaunchActivity();
----1.ContextImpl appContext = createBaseContextForActivity(r);//创建该 context实现类
----2.mInstrumentation.newActivity();//通过appContext类加载器反射创建Activity
----3.LoadedApk.makeApplication();//创建application
----4.appContext与activity相关联
----5.执行activity.attach()方法。
----6.mInstrumentation.callActivityOnCreate();//执行oncreate方法 

2. 异常情况下的生命周期:

1.系统配置发生改变导致Activity被杀死并重新创建

异常终止:点击了返回键 ,锁屏 ,点击 Home 键 ,有其它 APP 进入前台(比如接听电话) ,启动了新的Activity ,屏幕方向发生旋转 ,APP被杀死。

总之:系统只在 Acitivity 被异常终止的时候才会触发 onSaveInstanceStateonRestor

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值