鸿蒙 Ability 讲授(页面生命周期、背景服务、数据访问)
先自我先容一下,小编浙江大学结业,去过华为、字节跳动等大厂,目前阿里P7深知大多数程序员,想要提升技能,每每是本身探索发展,但本身不成体系的自学结果低效又漫长,而且极易碰到天花板技术故步自封!
因此收集整理了一份《2024年最新HarmonyOS鸿蒙全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
https://i-blog.csdnimg.cn/blog_migrate/9d01e132440e179892268eed5efb008b.png
https://i-blog.csdnimg.cn/blog_migrate/1e210328c1ebf43f08d3b6c5f5c13b48.png
https://i-blog.csdnimg.cn/blog_migrate/12c626bbbbf86e00fdbb9ef139ee1864.png
https://i-blog.csdnimg.cn/blog_migrate/3277737d71dbd44d84e3fec1a56bdc0a.png
https://i-blog.csdnimg.cn/blog_migrate/5aa20aacaa7a9bc11443387a4f5f8414.png
既有得当小白学习的零基础资料,也有得当3年以上履历的小伙伴深入学习提升的进阶课程,涵盖了95%以上鸿蒙开发知识点,真正体系化!
由于文件比力多,这里只是将部门目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲门路、讲授视频,并且后续会持续更新
如果你需要这些资料,可以添加V获取:vip204888 (备注鸿蒙)
https://i-blog.csdnimg.cn/blog_migrate/a107ef6cca101a6e5ef140e06f20ec4f.png
正文
[*]五、结语
一、Ability用途
<hr> 在知道用法之前,首先你是不是得知道这个Ability怎么读?对了,Ability (音译 :阿B了D),中文意思就是能力,不要给我扯什么音标啥的,不好使,你仔细想一下,你是由于英语学得好才来当程序员的吗?To young to simple!
Ability 是应用所具备能力的抽象,也是应用程序的重要组成部门。一个应用可以具备多种能力(即可以包含多个 Ability),HarmonyOS 支持应用以 Ability 为单位进行部署。Ability 可以分为 FA(Feature Ability)和 PA(Particle Ability)两种范例,每种范例为开发者提供了不同的模板,以便实现不同的业务功能。
从上面一段文字,去其糟粕,取其英华之后就是两点。FA(Feature Ability)和PA(Particle Ability)
FA(Feature Ability) (音译:非ture 阿B了D),中文意思是功能能力,它支持Page Ability 页面能力用于提供与用户交互的能力。一个Page 可以由一个或多个 AbilitySlice 构成,AbilitySlice 是指应用的单个页面及其控制逻辑的总和。
https://i-blog.csdnimg.cn/blog_migrate/cd1647ee63b68ac112b46000ce97a3c1.png
https://i-blog.csdnimg.cn/blog_migrate/3014ce8b7267c71170096116637e73e0.png
一个 Page 可以包含多个 AbilitySlice,但是 Page 进入前台时界面默认只展示一个AbilitySlice。默认展示的 AbilitySlice 是通过 setMainRoute() 方法来指定的。如果需要更改默认展示的 AbilitySlice,可以通过 addActionRoute() 方法为此 AbilitySlice 配置一条路由规则。此时,当其他 Page 实例期望导航到此 AbilitySlice 时,可以在 Intent 中指定 Action。addActionRoute() 方法中使用的动作定名,需要在应用配置文件(config.json)中注册:
好比
https://i-blog.csdnimg.cn/blog_migrate/9b810f31bef250076e27d5b284e4f826.png
PA(Particle Ability) (音译:趴踢扣 阿B了D),这个内里也是支持两个能力, Service Ability 和 Data Ability 我相信你知道它们的意思,就是服务能力和数据能力。Service用于提供背景运行使命的能力。Data 用于对外部提供同一的数据访问抽象。在配置文件(config.json)中注册 Ability 时,可以通过配置 Ability 元素中的“type”属性来指定 Ability 模板范例,示比方下。其中,“type”的取值可以为“page”、“service”或“data”,分别代表 Page 模板、Service 模板、Data 模板。结合下面这个图来看知道是怎么回事了,type的属性值取决于你创建Ability是选择的范例,当然你也可以后面再改。
https://i-blog.csdnimg.cn/blog_migrate/0df1e00007088fb0b511aecc71342f59.png
二 、Page Ability讲授
<hr> 如今我们知道这个Page Ability是主要负责页面交互的,那么就可以明白为Android 的Activity。那么都知道Activity有生命周期,同样的Page Ability也是的。下面来看看它的生命周期。
① Page Ability 生命周期
首先来看官方的一张图
https://i-blog.csdnimg.cn/blog_migrate/ed4a2196260781cc06a3fc0b4b74c3bd.png
重点看蓝色方框的。粉红色的是当前应用的状态。
声明周期分别是onStart()、onActive()、onInactive()、onBackground()、onForeground()、onStop()
下面来看看具体的解释
[*]onStart() 当系统初次创建 Page Ability实例时,触发该回调。对于一个 Page Ability实例,该回调在其生命周期过程中仅触发一次,Page Ability在该逻辑后将进入 INACTIVE 状态。开发者必须重写该方法,并在此配置默认展示的 AbilitySlice。如下图所示
https://i-blog.csdnimg.cn/blog_migrate/02e02af5020f172ac1db1990f2c94914.png
和onCreate有点像。
[*] onActive() Page Ability会在进入 INACTIVE 状态后来到前台,然后系统调用此回调。Page Ability 在此之后进入ACTIVE 状态,该状态是应用与用户交互的状态。Page Ability将保持在此状态,除非某类事件发生导致 Page Ability失去焦点,好比用户点击返回键或导航到其他 Page Ability。当此类事件发生时,会触发Page Ability回到 INACTIVE 状态,系统将调用 onInactive() 回调。今后,Page Ability大概重新回到ACTIVE 状态,系统将再次调用 onActive() 回调。因此,开发者通常需要成对实现 onActive() 和 onInactive(),并在 onActive() 中获取在 onInactive() 中被释放的资源。类似于Android的onResume。
[*] onInactive() 当 Page Ability失去焦点时,系统将调用此回调,今后 Page 进入 INACTIVE 状态。开发者可以在此回调中实现 Page 失去焦点时应表现的恰当举动。类似于Android的onPause和onStop的集合体。
[*] onBackground() 如果 Page Ability不再对用户可见,系统将调用此回调通知开发者用户进行相应的资源释放,今后Page Ability进入 BACKGROUND 状态。开发者应该在此回调中释放 Page Ability 不可见时无用的资源,或在此回调中实行较为耗时的状态生存操作。
[*] onForeground() 处于 BACKGROUND 状态的 Page Ability仍然驻留在内存中,当重新回到前台时(好比用户重新导航到此 Page Ability),系统将先调用 onForeground()回调通知开发者,而后 Page 的生命周期状态回到 INACTIVE 状态。开发者应当在此回调中重新申请在 onBackground()中释放的资源,末了 Page 的生命周期状态进一步回到 ACTIVE 状态,系统将通过 onActive()回调通知开发者用户。
[*] onStop() 系统将要销毁 Page Ability时,将会触发此回调函数,通知用户进行系统资源的释放。销毁 Page 的大概原因包罗以下几个方面:
▪ 用户通过系统管理能力关闭指定 Page Ability,比方使用使命管理器关闭 Page Ability。
▪ 用户举动触发 Page Ability的 terminateAbility()方法调用,比方使用应用的退出功能。
▪ 配置变动导致系统临时销毁 Page Ability并重修。
▪ 系统出于资源管理目的,自动触发对处于 BACKGROUND 状态 Page Ability的销毁。
OK,Page Ability 的生命周期就讲完了,具体要熟悉的话还是从现实开发中获取才行。
② AbilitySlice 生命周期
先来看下面这张图
https://i-blog.csdnimg.cn/blog_migrate/d00f504e4752ac73b8529d0412d0e303.png
说实话一开始创建项目的时候就只有这个MainAbility和HelloWorld以及slice包下的MainAbilitySlice,后来新建了一个SecondAbility,而SecondAbilitySlice是自动生成的,这说明一个题目,它们之间有不可告人的秘密。那么下面就戳穿这个秘密,摊牌了,它们是一对好基友。
解释:AbilitySlice 作为 Page Ability的组成单元,其生命周期是依托于其所属 Page Ability生命周期的。AbilitySli
免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页:
[1]