美文网首页
Day8 鸿蒙,一个Ability全家桶究竟包括了什么(一)

Day8 鸿蒙,一个Ability全家桶究竟包括了什么(一)

作者: 程序员小小叶 | 来源:发表于2020-12-17 21:06 被阅读0次

    Ability是鸿蒙应用所具备能力的抽象,也是应用程序的重要组成部分。一个应用可以具备多种能力(即可以包含多个Ability),HarmonyOS支持应用以Ability为单位进行部署。Ability可以分为FA(Feature Ability)和PA(Particle Ability)两种类型,每种类型为开发者提供了不同的模板,以便实现不同的业务功能。

    FA支持Page Ability:
    Page模板是FA唯一支持的模板,用于提供与用户交互的能力。一个Page实例可以包含一组相关页面,每个页面用一个AbilitySlice实例表示。

    PA支持Service Ability和Data Ability:
    Service模板:用于提供后台运行任务的能力。
    Data模板:用于对外部提供统一的数据访问抽象。

    大家看到这是不是觉得似曾相识,这个Page Ability不就是Activity,Service Ability不就是Service,Data Ability不就是ContentProvider吗?至少从目前的描述来看,这个和安卓的那一套即为相似,只不过多了点封装。那真的是这样的吗?

    让我们来一探究竟!!!限于篇幅,我们今天先介绍Page Ability。

    【鸿蒙&安卓】

    一、概念对比:

    概念对比

    【结论】

    1、相同的是,首先两者都是应用的入口,用于提供与用户交互的能力;
    2、不同的是,Page Ability只有一个,但可以由多个(最少1个)AbilitySlice组成;而Activity可以是多个共同组成app的,而且可以用Activity嵌套Fragment,甚至是Activity先嵌套Fragment,再嵌套ViewPage或者是Activity先嵌套ViewPage,再嵌套Activity。

    案例

    图左是安卓,图右是鸿蒙

    二、生命周期对比:

    Activity:

    Activity的生命周期有七个方法。

    Activity的生命周期

    Page Ability:

    Page Ability的生命周期有六个方法。

    Page Ability的生命周期

    【结论】

    1、相同的是,首先两者都是将生命周期定义为成对出现;

    2、不同的是,Activity首先多了onRestart()回调,这是在打开一个新的当前的Activity,这个在鸿蒙的PageAbility被取消了,当前的PageAbility不会被暂停;另外PageAbility,在我的理解中,鸿蒙是将事件驱动的应用程序看做了一个很好的状态机模型,通过控制状态的逻辑委托不同的状态去做不同的事情,对于每一个状态来说又再次委托控制状态的逻辑做出相应的动作和修改。简单来说,就是通过将不同的状态分开来讨论,抽取共同性,使得问题的处理变得简单。

    Activity

    上图是安卓,下图是鸿蒙

    PageAbility

    本文由GZH程序员小小叶发布!

    相关文章

      网友评论

          本文标题:Day8 鸿蒙,一个Ability全家桶究竟包括了什么(一)

          本文链接:https://www.haomeiwen.com/subject/ssktnktx.html