不缀—鸿蒙应用开发HCIA认证模拟题每日1练|前两日的笔记 原创 精华

Der_带鱼
发布于 2021-7-21 15:06
浏览
2收藏

不缀—鸿蒙应用开发HCIA认证模拟题每日1练|前两日的笔记

时间:2021年7月17日08:26:59

引言

张荣超老师在51CTO社区开了视频专题《鸿蒙应用开发HCIA认证模拟题每日1练》,笔者表示正是及时雨,保持每天的知识学习,加上每天的一道联系,相得益彰。在学习期间,笔者书此笔记,记学习思考、拓展分享、学习体验

51社区张荣超老师主页

DevEco开发文档

时间:2021年7月21日14:59:33

本来想做成一周一贴的笔记分享的,但是张荣超老师把课程传到了51学堂并进行收费,为了保护老师的知识产权,就把前两日免费的课程的笔记分享出来。==后续收费的课程我会继续学习,笔记的呈现形式将会调整!==

这里分享老师课程的链接!大家也快去抢板凳!

鸿蒙应用开发HCIA认证模拟题每日1练

一、2021年7月16日-页面导航

不缀—鸿蒙应用开发HCIA认证模拟题每日1练|前两日的笔记-鸿蒙开发者社区

(一)自主分析

  • 自主分析:

各元素:AbilitySlice、Page

知识点:页面导航

  • 拓展分享:

    from 开发文档

    • Ability是应用所具备能力的抽象,也是应用程序的重要组成部分。一个应用可以具备多种能力(即可以包含多个Ability),HarmonyOS支持应用以Ability为单位进行部署。

    • AbilitySlice是指应用的单个页面及其控制逻辑的总和

    • Page和AbilitySlice的关系:一个Page由多个AbilitySlice共同构成

      举例:

      Page-新闻浏览功能

      AbilitySlice1:新闻列表

      AbilitySlice2:新闻详情

不缀—鸿蒙应用开发HCIA认证模拟题每日1练|前两日的笔记-鸿蒙开发者社区

AbilitySlice间导航(from 开发文档)

  • 同Page:

present()

presentForResult()

区别:后者获得其返回结果

  • 不同Page:

startAbility()或startAbilityForResult()

onAbilityResult()

区别:后者获得其返回结果

为什么可以不同Page : AbilitySlice作为Page的内部单元,以Action的形式对外暴露,因此可以通过配置Intent的Action导航到目标AbilitySlice。

  • 注意

系统为每个Page维护了一个AbilitySlice实例的,每个进入前台的AbilitySlice实例均会入栈。导航时指定的AbilitySlice实例均是新建的,即便重复执行此代码(此时作为导航目标的这些实例是同一个类),也不会导致任何AbilitySlice出栈。

(二)老师讲解

老师用代码讲解!!!!!OMG太棒了!

  • 考察的知识点:使用隐式方式在不同Page间导航

  • 老师的讲解:

    • setMainRoute:设置为默认路由
    • 三步实现不同Page跳转:
    1. 在config.json中注册目标PageA对应的action
    2. 在原PageB或对应的AbilitySliceB在调入方法startAbility()进行导航,设置Intent实例中指定刚刚PageA注册action
    3. 在目标PageA中调用方法addActionRoute()为AbilitySliceA2添加路由(第一个参数为第二步中指定的action、第二个参数指定AbilitySliceA2)
  • 所以答案ABC

  • D选项分析

Device设置为空表示当前设备,为干扰项

二、2021年7月17日-页面生命周期

时间:2021年7月19日15:16:39

注:昨天的每日一题学习和实践了,但没有总结和拓展(嘿嘿周末嘛还是出去恰了点好的),今儿19日周一把17日和今天的每日一题剖析到位。啊,今天19号的还没有出来。

不缀—鸿蒙应用开发HCIA认证模拟题每日1练|前两日的笔记-鸿蒙开发者社区

(一)自主分析

  • 自主分析:

各元素:AbilitySlice、焦点

知识点:页面生命周期

  • 拓展分享:

学习补充:

焦点的理解:

这里的意思是默认路由的意思。

获取焦点的的意思就是,打个比方:

老师上课点名,喊你的名字,比如:张三,你在干什么,老师一说你,大家就知道是张三了

老师接着喊下一个人的名字:张四,你在干什么,焦点就转张三转到了张四,”你“现在就代指张四

PA页面的生命周期:

  • onStart()

    当系统首次创建Page实例时,触发该回调。对于一个Page实例,该回调在其生命周期过程中仅触发一次,Page在该逻辑后将进入INACTIVE状态。开发者必须重写该方法,并在此配置默认展示的AbilitySlice。

  • onActive()

    Page会在进入INACTIVE状态后来到前台,然后系统调用此回调。Page在此之后进入ACTIVE状态,该状态是应用与用户交互的状态。Page将保持在此状态,除非某类事件发生导致Page失去焦点,比如用户点击返回键或导航到其他Page。当此类事件发生时,会触发Page回到INACTIVE状态,系统将调用onInactive()回调。此后,Page可能重新回到ACTIVE状态,系统将再次调用onActive()回调。因此,开发者通常需要==成对实现==onActive()和onInactive()并在onActive()中获取在onInactive()中被释放的资源。

  • onInactive()

    当Page==失去焦点==时,系统将调用此回调,此后Page进入INACTIVE状态。开发者可以在此回调中实现Page失去焦点时应表现的恰当行为。

  • onBackground()

    如果Page不再对用户可见,系统将调用此回调通知开发者用户进行相应的资源释放,此后Page进入BACKGROUND状态。开发者应该在此回调中释放Page不可见时无用的资源,或在此回调中执行较为耗时的状态保存操作。

  • onForeground()

    处于BACKGROUND状态的Page仍然驻留在内存中,当重新回到前台时(比如用户重新导航到此Page),系统将先调用onForeground()回调通知开发者,而后Page的生命周期状态回到INACTIVE状态。开发者应当在此回调中重新申请在onBackground()中释放的资源,最后Page的生命周期状态进一步回到ACTIVE状态,系统将通过onActive()回调通知开发者用户。

  • onStop()

    系统将要销毁Page时,将会触发此回调函数,通知用户进行系统资源的释放。销毁Page的可能原因包括以下几个方面:

    • 用户通过系统管理能力关闭指定Page,例如使用任务管理器关闭Page。
    • 用户行为触发Page的terminateAbility()方法调用,例如使用应用的退出功能。
    • 配置变更导致系统暂时销毁Page并重建。
    • 系统出于资源管理目的,自动触发对处于BACKGROUND状态Page的销毁。
  • AbilitySlice生命周期:

AbilitySlice作为Page的组成单元,其生命周期是依托于其所属Page生命周期的。AbilitySlice和Page具有相同的生命周期状态和同名的回调,当Page生命周期发生变化时,它的AbilitySlice也会发生相同的生命周期变化。

AbilitySlice还具有独立于Page的生命周期变化**(导航)**

  • Page与AbilitySlice生命周期关联

当AbilitySlice处于前台且具有焦点时,其生命周期状态随着所属Page的生命周期状态的变化而变化。当一个Page拥有多个AbilitySlice时,例如:MyAbility下有FooAbilitySlice和BarAbilitySlice,当前FooAbilitySlice处于前台并获得焦点,并即将导航到BarAbilitySlice,在此期间的生命周期状态变化顺序为:

  1. FooAbilitySlice从ACTIVE状态变为INACTIVE状态。
  2. BarAbilitySlice则从INITIAL状态首先变为INACTIVE状态,然后变为ACTIVE状态(假定此前BarAbilitySlice未曾启动)。
  3. FooAbilitySlice从INACTIVE状态变为BACKGROUND状态。

对应两个slice的生命周期方法回调顺序为:

FooAbilitySlice.onInactive() --> BarAbilitySlice.onStart() --> BarAbilitySlice.onActive() --> FooAbilitySlice.onBackground()

在整个流程中,==MyAbility始终处于ACTIVE状态==。但是,当Page被系统销毁时,其所有已实例化的AbilitySlice将联动销毁,而不仅是处于前台的AbilitySlice。

JS自定义组件的生命周期有哪些

不缀—鸿蒙应用开发HCIA认证模拟题每日1练|前两日的笔记-鸿蒙开发者社区

不缀—鸿蒙应用开发HCIA认证模拟题每日1练|前两日的笔记-鸿蒙开发者社区

不缀—鸿蒙应用开发HCIA认证模拟题每日1练|前两日的笔记-鸿蒙开发者社区

(二)老师讲解

  • 按题干分析出知识点: 页面的生命周期图
  • 进行喜闻乐见的上代码环节:在不同的页面中,重写所有的生命周期回调方法,并打印info级别的日志。
  • page生命周期图

不缀—鸿蒙应用开发HCIA认证模拟题每日1练|前两日的笔记-鸿蒙开发者社区

  • 进行了分析和提醒

不缀—鸿蒙应用开发HCIA认证模拟题每日1练|前两日的笔记-鸿蒙开发者社区

不缀—鸿蒙应用开发HCIA认证模拟题每日1练|前两日的笔记-鸿蒙开发者社区

总结:老师最后的总结跟开发文档的最后的提醒是一样的,着重记住**Background()**的位置。

©著作权归作者所有,如需转载,请注明出处,否则将追究法律责任
7
收藏 2
回复
举报
6条回复
按时间正序
/
按时间倒序
红叶亦知秋
红叶亦知秋

学完张老师的再来看看楼主的。

回复
2021-7-21 15:35:09
Anzia
Anzia

真系统,不错的学习方法!加油!

回复
2021-7-21 21:13:45
番茄酱?
番茄酱?

不错,学习了,总结得很详细,坚持下去!

回复
2021-7-22 00:18:19
Der_带鱼
Der_带鱼 回复了 番茄酱?
不错,学习了,总结得很详细,坚持下去!

谢谢!!

回复
2021-7-22 08:22:05
XFJingGG
XFJingGG

给楼主加鸡腿

回复
2021-7-22 08:52:08
鸿蒙开发者社区官方账号
鸿蒙开发者社区官方账号

欢迎加入社区官方的HCIA—鸿蒙开发者职业认证交流群

已于2021-7-27 18:07:06修改
回复
2021-7-22 16:47:58
回复
    相关推荐