• Home
Name Date Size #Lines LOC

..--

entry/12-May-2024-3,3252,864

screenshots/devices/12-May-2024-

.gitignoreD12-May-202489 77

README_zh.mdD12-May-20249.6 KiB15878

build-profile.json5D12-May-20241 KiB4241

hvigorfile.jsD12-May-2024174 21

package.jsonD12-May-2024370 1818

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.jsonmodule/abilites;对应Stage模型中主要有module.json5,需要时对应的ServiceExtAbility等须配置在module.json5中的extensionAbilities中,Page页面的Ability在abilites中。
31
322.Stage模型中卡片的创建需要的配置文件在resources/base/profile/form_config.json33
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.resourceManager45
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.descriptionIdabilityInfo.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![](screenshots/devices/main.png)
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