用Android的Activity生命周期解释HarmonyOS的Page Ability生命周期 | 解读鸿蒙源码

由华为出品、我国完全自主知识产权的HarmonyOS是一款“面向未来”、面向全场景(移动办公、运动健康、社交通信、媒体娱乐等)的分布式操作系统 。现已于2020年9月10日开源,并面向应用开发者发布Beta版本。预计明年鸿蒙将取代Android,全面支持华为手机。

Android程序员转型HarmonyOS程序员的已经提上了日程,学习HarmonyOS的开发是每个Android程序员的头等大事。就像每个Android程序员都是从Activity的生命周期开始学习Android开发的,我们转型Harmony开发也要从Page Ability的生命周期入手。本文我将用Android的Activity生命周期解释HarmonyOS的Page Ability生命周期。

如官方图所示,Page Ability的生命周期分初始状态(INITIAL)、前台状态(ACTIVE)、可见状态(INACTIVE)和后台状态(BACKGROUND),与Android的Activity的生命周期状态大同小异(把不可见状态分为了“刚创建”和“快结束”两种),触发这些状态的回调方法也可以理解为Activity的某些方法:

(1)onStart():

当系统首次创建Page Ability实例时,会触发onStart()方法。就像onCreate()方法在一个Activity实例的生命周期过程中只调用一次一样,对于一个Page Ability实例,onStart()方法在其生命周期过程中也能且仅能触发一次,Page Ability在此方法执行后进入可见状态(INACTIVE)。

本方法可以理解为Activity的onCreate() + onStart()方法,但有所不同的是Page Ability的onStart()方法必须重写,因为需要在此方法内配置默认展示的AbilitySlice(可以理解为Android的Fragment,不在本文讨论范围内)

(2)onActive():

Page Ability会在进入前台状态(ACTIVE)后系统调用onActive()方法。Page Ability会一直保持ACTIVE状态,直到Page Ability失去焦点。

本方法可以理解为Activity的onResume()方法。

(3)onInactive():

当Page Ability失去焦点(对用户不可操作,可能可见,也可能不可见)时,会调用此方法,然后Page Ability进入INACTIVE状态。常见的场景有从屏幕顶部拉出Notification或者被非全屏的Page Ability不完全遮挡等。

本方法可以理解为Activity的onPause()方法。就像Activity的onResume()与onPause()方法经常成对出现一样,Page Ability的onActive()也与onInactive()方法成对出现,并在onActive()中获取在onInactive()中被释放的资源。

至于onInactive()是否像onPause()方法与AMS进行Binder通信启动新Activity一样为了启动新Page Ability做了点什么事,以及onActive()是否像onResume()方法执行完毕就意味着ViewRootImpl创建一样为了绘制UI做了点什么事,属于HarmonyOS进阶知识,不在本文讨论范围内。

(4)onBackground():

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

本方法可以理解为Activity的onStop()方法

(5)onForeground():

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

本方法可以理解为Activity的onRestart() + onStart()方法。

(6)onStop():

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

本方法可以理解为Activity的onDestory()方法。

通过本文,我们了解了HarmonyOS的Page Ability的生命周期,为转型HarmonyOS程序员打下了坚实基础。

本文参与了「解读鸿蒙源码」技术征文,欢迎正在阅读的你也加入。

优秀的个人博客,低调大师

微信关注我们

原文链接:https://my.oschina.net/u/2404919/blog/4650752

转载内容版权归作者及来源网站所有!

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。

相关文章

发表评论

资源下载

更多资源
Mario,低调大师唯一一个Java游戏作品

Mario,低调大师唯一一个Java游戏作品

马里奥是站在游戏界顶峰的超人气多面角色。马里奥靠吃蘑菇成长,特征是大鼻子、头戴帽子、身穿背带裤,还留着胡子。与他的双胞胎兄弟路易基一起,长年担任任天堂的招牌角色。

Oracle Database,又名Oracle RDBMS

Oracle Database,又名Oracle RDBMS

Oracle Database,又名Oracle RDBMS,或简称Oracle。是甲骨文公司的一款关系数据库管理系统。它是在数据库领域一直处于领先地位的产品。可以说Oracle数据库系统是目前世界上流行的关系数据库管理系统,系统可移植性好、使用方便、功能强,适用于各类大、中、小、微机环境。它是一种高效率、可靠性好的、适应高吞吐量的数据库方案。

Java Development Kit(Java开发工具)

Java Development Kit(Java开发工具)

JDK是 Java 语言的软件开发工具包,主要用于移动设备、嵌入式设备上的java应用程序。JDK是整个java开发的核心,它包含了JAVA的运行环境(JVM+Java系统类库)和JAVA工具。

Sublime Text 一个代码编辑器

Sublime Text 一个代码编辑器

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。