Name Date Size

..25-Oct-20244 KiB

.gitignoreH A D25-Oct-202477

AppScope/H25-Oct-20244 KiB

build-profile.json5H A D25-Oct-20241 KiB

entry/H25-Oct-20244 KiB

hvigor/H25-Oct-20244 KiB

hvigorfile.jsH A D25-Oct-2024168

hvigorwH A D25-Oct-20242.1 KiB

hvigorw.batH A D25-Oct-20242 KiB

oh-package.json5H A D25-Oct-2024819

ohosTest.mdH A D25-Oct-2024756

README_zh.mdH A D25-Oct-20244.2 KiB

screenshots/devices/H25-Oct-20244 KiB

README_zh.md

1# Ability的启动模式
2
3### 介绍
4
5本示例展示了在一个Stage模型中,实现standard、singleton、specified多种模式场景。
6
7本实例参考[开发指南](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/quick-start/application-package-structure-stage.md) 。
8本实例需要使用[aa工具](https://gitee.com/openharmony/docs/blob/master/zh-cn/application-dev/tools/aa-tool.md) 查看应用Ability 模式信息。 
9
10### 效果预览
11
12|主页|普通多实例Ability信息|单实例Ability信息|指定多实例Ability信息|
13|--------------------------------|--------------------------------|--------------------------------|--------------------------------|
14|![home](screenshots/devices/home.png)|![普通多实例Ability信息](screenshots/devices/standardAbilityMsg.png)|![单实例Ability信息](screenshots/devices/singletonAbilityMsg.png)|![指定多实例Ability信息](screenshots/devices/specifiedAbilityMsg.png)|
15
16使用说明
17
181、standard模式:
19
201)进入首页,点击番茄,会新建一个番茄的Ability,展示番茄的详情;
21
222)在番茄的详情界面,点击黄瓜,会新建一个黄瓜的Ability,展示黄瓜的详情;
23
243)使用aa工具查看Ability信息,此时存在以下Ability:1个番茄的Ability、1个黄瓜的Ability、1个首页的Ability;
25
262、singleton模式:
27
281)进入首页,点击冰淇凌,会新建一个冰淇凌的Ability,展示冰淇凌的详情;
29
302)在冰淇凌的详情界面,点击螃蟹,会复用冰淇凌的Ability,页面数据会刷新并展示螃蟹的详情;
31
323)使用aa工具查看Ability信息,此时存在以下Ability:1个冰淇凌的Ability、1个首页Ability;
33
343、specified模式:
35
361)进入首页,点击核桃,会新建一个核桃的Ability,展示核桃的详情;
37
382)在核桃的详情界面,点击蓝莓,会新建一个蓝莓的Ability,展示蓝莓的详情;
39
403)在蓝莓的详情界面,点击核桃,会复用已存在的核桃的Ability,实现specified模式下的单实例特性,页面数据会刷新并展示核桃的详情;
41
424)使用aa工具查看Ability信息,此时存在以下Ability:1个核桃的Ability、1个蓝莓的Ability、1个首页Ability;
43
44### 工程目录
45```
46entry/src/main/ets/
47|---Application
48|---common
49|   |---Logger.ts                     // 日志工具
50|   |---Util.ts                       // 封装常用函数
51|---MainAbility
52|---model
53|   |---DataModel.ts                  // 封装数据类型
54|   |---DataUtil.ts                   // 封装数据处理函数
55|   |---MokeData.ts                   // 模拟数据
56|---pages
57|   |---component
58|   |   |---FoodListItem.ets          // 食物列表组件
59|   |---FoodDetail.ets                // 食物详情页
60|   |---Home.ets                      // 首页
61```
62### 具体实现
63
64* 本示例启动standard、singleton、specified三种模式的方法主要封装在Util当中,源码参考:[Util.ts](entry/src/main/ets/common/Util.ts) 。
65    * 新建Ability:创建三个代表standard、singleton、specified模式的Ability,如工程目录中的SingletonAbility、SpecifiedAbility、StandardAbility,并在module.json文件中将launchType属性修改为对应的启动模式属性。
66    * 启动指定Ability:通过Util中的startMode函数根据页面所传的abilityName,启动对应的ability并进入详情页面。
67    * specified多实例功能实现:specified模式则是根据MyAbilityStage中的onAcceptWant函数给用户返回一个ability标识,如果之前启动过标识的ability,不创建新的实例并拉回栈顶,否则创建新的实例并启动。
68
69### 相关权限
70
71不涉及。
72
73### 依赖
74
75不涉及。
76
77### 约束与限制
78
791.本示例仅支持标准系统上运行,支持设备:RK3568。
80
812.本示例已适配API version 9版本SDK,版本号:3.2.11.9。
82
833.本示例需要使用DevEco Studio 3.1 Beta2 (Build Version: 3.1.0.400 构建 2023年4月7日)及以上版本才可编译运行。
84
85### 下载
86
87如需单独下载本工程,执行如下命令:
88
89```
90git init
91git config core.sparsecheckout true
92echo code/BasicFeature/ApplicationModels/AbilityStartMode/ > .git/info/sparse-checkout
93git remote add origin https://gitee.com/openharmony/applications_app_samples.git
94git pull origin master
95```