深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上鸿蒙开发知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
生命周期流程图
拓展问题:
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