| Name | Date | Size | #Lines | LOC | ||
|---|---|---|---|---|---|---|
| .. | - | - | ||||
| entry/ | 12-May-2024 | - | 3,325 | 2,864 | ||
| screenshots/devices/ | 12-May-2024 | - | ||||
| .gitignore | D | 12-May-2024 | 89 | 7 | 7 | |
| README_zh.md | D | 12-May-2024 | 9.6 KiB | 158 | 78 | |
| build-profile.json5 | D | 12-May-2024 | 1 KiB | 42 | 41 | |
| hvigorfile.js | D | 12-May-2024 | 174 | 2 | 1 | |
| package.json | D | 12-May-2024 | 370 | 18 | 18 |
README_zh.md
1# FA模型 2 3### 介绍 4 5Ability框架在API 8及更早版本使用[FA模型](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/ability/fa-brief.md)。FA模型中Ability分为PageAbility、ServiceAbility、DataAbility、FormAbility几种类型。其中: 6 7- PageAbility是具备ArkUI实现的Ability,是用户具体可见并可以交互的Ability实例。 8- ServiceAbility也是Ability一种,但是没有UI,提供其他Ability调用自定义的服务,在后台运行。 9- DataAbility也是没有UI的Ability,提供其他Ability进行数据的增删查服务,在后台运行。 10- FormAbility是卡片Ability,是一种界面展示形式。 11 12本示例主要展示FA模型与Stage模型的区别,分别从DataAbility、PageAbility(工程中对应MainAbility)、ServiceAbility、FA卡片、featureAbility、particleAbility、context模块进行介绍。 13 14DataAbility:接口createRdbPredicates;通过createRdbPredicates创建DataAbilityHelper对象;通过rdb创建数据库,用来存放数据;通过DataAbilityHelper来访问数据库;通过dataAbility对数据库进行增删改查操作。 15 16ServiceAbility:生命周期函数onStart、onCommand、onConnect、onDisconnect、onStop;通过featureAbility中的startAbility启动Service;通过connectAbility连接service;通过disconnectAbility断开service连接;通过rpc进行客户端与服务端通信。 17 18FormAbility:生命周期函数onCreate、onCastToNormal、onUpdate、onVisibilityChange、onEvent、onDestroy、onAcquireFormState;通过formBindingData中的createFormBindingData创建卡片。 19 20featureAbility: 提供UI设计与用户交互的能力 , 包括启动新的ability、获取dataAbilityHelper、设置此Page Ability、获取当前Ability对应的窗口,连接服务等 。 21 22particleAbility: 提供Service类型Ability的能力,包括启动、停止指定的particleAbility,获取dataAbilityHelper,连接、断开当前Ability与指定ServiceAbility等 。 23 24context: 提供ability或application的上下文的能力,包括允许访问特定于应用程序的资源、请求和验证权限等。 25 26PageAbility:应用的界面绘制。 27 28#### FA和Stage模型的区别 29 301.在FA模型中主要配置文件config.json,需要时将对应的ability配置在config.json中module/abilites;对应Stage模型中主要有module.json5,需要时对应的ServiceExtAbility等须配置在module.json5中的extensionAbilities中,Page页面的Ability在abilites中。 31 322.Stage模型中卡片的创建需要的配置文件在resources/base/profile/form_config.json。 33 343.FA模型中ability生命周期与Stage模型生命周期区别: 35 36FA模型生命周期[具体参考文档](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/ability/fa-brief.md#生命周期) ;Stage模型生命周期[具体参考文档](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/ability/stage-brief.md#生命周期) 。 37 384.FA模型中dataAbility对应Stage模型中DataShareExtensionAbility,具体实现差异详见方法注释。 39 405.FA模型中ServiceAbility对应Stage模型中ServiceExtensionAbility,具体实现差异详见方法注释。 41 426.FA模型中DataAbilityHelper对应stage模型DataShareHelper。 43 447.FA模型通过导入@ohos.resourceManager, 获取应用资源信息 ;Stage模型从API Version9开始,通过context获取resourceManager对象的方式,再调用其内部获取资源的接口, 无需再导入 @ohos.resourceManager。 45 46#### FA对应Stage接口(FA-->Stage) 47 48**FeatureAbility——>AbilityContext、dataShare接口:** 49 50[FeatureAbilityHelper](./entry/src/main/ets/MainAbility/feature/FeatureAbilityHelper.ts):getWant——>MainAbility:want 51 52[FeatureAbilityHelper](./entry/src/main/ets/MainAbility/feature/FeatureAbilityHelper.ts):startAbilityForResult——>AbilityContextController:startAbilityForResult 53 54[FeatureAbilityHelper](./entry/src/main/ets/MainAbility/feature/FeatureAbilityHelper.ts):acquireDataAbilityHelper——>DataShareHelper:createDataShareHelper 55 56[FeatureAbilityHelper](./entry/src/main/ets/MainAbility/feature/FeatureAbilityHelper.ts):terminateSelfWithResult——>AbilityContextController:terminateSelfWithResult 57 58[FeatureAbilityHelper](./entry/src/main/ets/MainAbility/feature/FeatureAbilityHelper.ts):hasWindowFocus——>Stage模型不支持 59 60[FeatureAbilityHelper](./entry/src/main/ets/MainAbility/feature/FeatureAbilityHelper.ts):terminateSelf——>AbilityContextController:terminateSelf 61 62[FeatureAbilityHelper](./entry/src/main/ets/MainAbility/feature/FeatureAbilityHelper.ts):getWindow——>WindowController:getTopWindow 63 64[FeatureAbilityHelper](./entry/src/main/ets/MainAbility/feature/FeatureAbilityHelper.ts):startServiceAbility——>AbilityContextController:startAbility 65 66[FeatureAbilityHelper](./entry/src/main/ets/MainAbility/feature/FeatureAbilityHelper.ts):connectService——>AbilityContextController:connectAbility 67 68[FeatureAbilityHelper](./entry/src/main/ets/MainAbility/feature/FeatureAbilityHelper.ts):disconnectService——>AbilityContextController:disconnectAbility 69 70 71 72**context-->AbilityContext、Bundle、Window、abilityAccessCtrl接口:** 73 74[AppContext](./entry/src/main/ets/MainAbility/feature/AppContext.ts):getOrCreateLocalDir——>BundleController:entryDir 75 76[AppContext](./entry/src/main/ets/MainAbility/feature/AppContext.ts):verifyPermission——>AbilityAccessCtrlController:verifyAccessToken 77 78[AppContext](./entry/src/main/ets/MainAbility/feature/AppContext.ts):requestPermissionsFromUser——>AbilityContextController:requestPermissionsFromUser 79 80[AppContext](./entry/src/main/ets/MainAbility/feature/AppContext.ts):getApplicationInfo——>BundleController:getApplicationInfo 81 82[AppContext](./entry/src/main/ets/MainAbility/feature/AppContext.ts):getBundleName——>AbilityContextPage:abilityInfo.bundleName(属性) 83 84[AppContext](./entry/src/main/ets/MainAbility/feature/AppContext.ts):getDisplayOrientation——>AbilityContextPage:config.direction(属性) 85 86[AppContext](./entry/src/main/ets/MainAbility/feature/AppContext.ts):setDisplayOrientation——>WindowController:setPreferredOrientation 87 88[AppContext](./entry/src/main/ets/MainAbility/feature/AppContext.ts):setShowOnLockScreen——>MainAbility:setShowOnLockScreen 89 90[AppContext](./entry/src/main/ets/MainAbility/feature/AppContext.ts):setWakeUpScreen——>WindowController:setWakeUpScreen 91 92[AppContext](./entry/src/main/ets/MainAbility/feature/AppContext.ts):getProcessInfo——>AbilityContextPage:abilityInfo.descriptionId;abilityInfo.name(属性) 93 94[AppContext](./entry/src/main/ets/MainAbility/feature/AppContext.ts):getElementName——>BundleController:getAbilityInfo 95 96[AppContext](./entry/src/main/ets/MainAbility/feature/AppContext.ts):getProcessName——>BundleController:process 97 98[AppContext](./entry/src/main/ets/MainAbility/feature/AppContext.ts):getCallingBundle——>want.parameters(属性) 99 100[AppContext](./entry/src/main/ets/MainAbility/feature/AppContext.ts):getCacheDir——>AbilityContextPage:cacheDir(属性) 101 102[AppContext](./entry/src/main/ets/MainAbility/feature/AppContext.ts):getFilesDir——>AbilityContextPage:filesDir(属性) 103 104[AppContext](./entry/src/main/ets/MainAbility/feature/AppContext.ts):getOrCreateDistributedDir——>AbilityContextPage:distributedFilesDir(属性) 105 106[AppContext](./entry/src/main/ets/MainAbility/feature/AppContext.ts):getAppType——>BundleController:entityType 107 108[AppContext](./entry/src/main/ets/MainAbility/feature/AppContext.ts):getHapModuleInfo——>AbilityContextPage:currentHapModuleInfo(属性) 109 110[AppContext](./entry/src/main/ets/MainAbility/feature/AppContext.ts):getAppVersionInfo——>BundleController.getDispatcherVersion 111 112[AppContext](../FaModel/entry/src/main/ets/MainAbility/feature/AppContext.ts):getAbilityInfo——>AbilityContextPage:abilityInfo(属性) 113 114[AppContext](./entry/src/main/ets/MainAbility/feature/AppContext.ts):getApplicationContext——>AbilityContextPage:getApplicationContext() 115 116[AppContext](./entry/src/main/ets/MainAbility/feature/AppContext.ts):isUpdatingConfigurations——>Stage模型不支持 117 118[AppContext](./entry/src/main/ets/MainAbility/feature/AppContext.ts):printDrawnCompleted——>Stage模型不支持 119 120 121 122**ParticleAbility ——>ServiceExtensionContext、dataShare接口:** 123 124[ParticleAbilityHelper](./entry/src/main/ets/MainAbility/feature/ParticleAbilityHelper.ts) :startAbility——>ServiceExtContextController:startAbility 125 126[ParticleAbilityHelper](./entry/src/main/ets/MainAbility/feature/ParticleAbilityHelper.ts) :connectAbility——>ServiceExtContextController:connectAbility 127 128[ParticleAbilityHelper](./entry/src/main/ets/MainAbility/feature/ParticleAbilityHelper.ts) :disconnectAbility——>ServiceExtContextController:disconnectAbility 129 130[ParticleAbilityHelper](./entry/src/main/ets/MainAbility/feature/ParticleAbilityHelper.ts):terminateSelf——>ServiceExtContextController:terminateSelf 131 132[ParticleAbilityHelper](./entry/src/main/ets/MainAbility/feature/ParticleAbilityHelper.ts) :acquireDataAbilityHelper——>DataShareHelper:createDataShareHelper 133 134#### 使用说明 135 1361.按照各按钮名称测试相应的接口功能。 137 138#### 效果预览 139 140 141 142### 相关权限 143 144不涉及。 145 146### 依赖 147 148FaModel升级StageModel,对应的StageModel参考[StageModel](../StageModel)。 149 150### 约束与限制 151 1521.本示例仅支持在标准系统上运行,支持设备:RK3568。 153 1542.本示例仅支持API9版本SDK,版本号:3.2.5.5。 155 1563.本示例需要使用DevEco Studio 3.0 Beta4 (Build Version: 3.0.0.992, built on July 14, 2022)才可编译运行。 157 158