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

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

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,不在本文讨论范围内)spa

(2)onActive():操作系统

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

本方法能够理解为Activity的onResume()方法。3d

(3)onInactive():blog

当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程序员打下了坚实基础。

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

相关文章
相关标签/搜索