1# @system.app (应用上下文) 2<!--Kit: ArkUI--> 3<!--Subsystem: ArkUI--> 4<!--Owner: @liyujie43--> 5<!--Designer: @weixin_52725220--> 6<!--Tester: @xiong0104--> 7<!--Adviser: @HelloCrease--> 8 9> **说明:** 10> 11> 本模块首批接口从API version 3开始支持。后续版本的新增接口,采用上角标单独标记接口的起始版本。 12 13 14## 导入模块 15 16 17```ts 18import app, { AppResponse } from '@system.app'; 19``` 20 21## App 22 23### getInfo 24 25static getInfo(): AppResponse 26 27获取当前应用配置文件中声明的信息。在Stage模型下接口返回值为null。 28 29从API Version9开始,推荐使用[bundleManager.getBundleInfoForSelf](../apis-ability-kit/js-apis-bundleManager.md#bundlemanagergetbundleinfoforself)。 30 31**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 32 33**系统能力:** SystemCapability.ArkUI.ArkUI.Lite 34 35**返回值:** 36 37| 参数类型 | 说明 | 38| -------- | -------- | 39| [AppResponse](#appresponse) | 定义AppResponse信息。 | 40 41**示例:** 42 43```ts 44import app, { AppResponse } from '@system.app'; 45export default class Info { 46 getInfo() { 47 let info:AppResponse = app.getInfo(); 48 console.log(JSON.stringify(info)); 49 } 50} 51``` 52 53### terminate 54 55static terminate(): void 56 57退出当前Ability。在Stage模型下接口功能不生效。 58 59从API Version 7开始,推荐使用[`@ohos.ability.featureAbility`](../apis-ability-kit/js-apis-ability-featureAbility.md)。 60 61**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 62 63**系统能力:** SystemCapability.ArkUI.ArkUI.Lite 64 65**示例:** 66 67```ts 68import app, { AppResponse } from '@system.app'; 69export default class TerM { 70 terminate() { 71 app.terminate(); 72 } 73} 74``` 75### setImageCacheCount<sup>7+</sup> 76 77static setImageCacheCount(value: number): void 78 79设置内存中缓存解码后图片的数量上限,提升再次加载同源图片的加载速度。如果不设置则默认为0,不进行缓存。缓存采用内置的LRU策略,新图片加载后,如果超过缓存上限,会删除最久未再次加载的缓存。建议根据应用内存需求,设置合理缓存数量,数字过大可能导致内存使用过高。 80 81setImageCacheCount方法需要在@Entry标记的页面,[onPageShow](../apis-arkui/arkui-ts/ts-custom-component-lifecycle.md#onpageshow)或[aboutToAppear](../apis-arkui/arkui-ts/ts-custom-component-lifecycle.md#abouttoappear)里面设置才生效。 82 83setImageCacheCount、setImageRawDataCacheSize、和setImageFileCacheSize并不灵活,后续不继续演进,对于复杂情况,更推荐使用[ImageKnife](https://gitee.com/openharmony-tpc/ImageKnife)。 84 85**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 86 87**系统能力:** SystemCapability.ArkUI.ArkUI.Full 88 89**参数:** 90 91| 参数名 | 类型 | 必填 | 说明 | 92| -------- | -------- | -------- | -------- | 93| value | number | 是 | 内存中解码后图片的缓存数量。number取值需大于0。 | 94 95**示例:** 96 97```ts 98// xxx.ets 99import app, { AppResponse } from '@system.app'; 100 101@Entry 102@Component 103struct Index { 104 onPageShow() { 105 // 设置解码后图片内存缓存上限为100张 106 app.setImageCacheCount(100); 107 console.info('Application onPageShow'); 108 } 109 onDestroy() { 110 console.info('Application onDestroy'); 111 } 112 113 build() { 114 Row(){ 115 // xxxxxxxxxxxxx为图片地址 116 Image('xxxxxxxxxxxxx') 117 .width(200) 118 .height(50) 119 }.width('100%') 120 } 121} 122``` 123 124### setImageRawDataCacheSize<sup>7+</sup> 125 126static setImageRawDataCacheSize(value: number): void 127 128设置内存中缓存解码前图片数据的大小上限,单位为字节,提升再次加载同源图片的加载速度。如果不设置则默认为0,不进行缓存。缓存采用内置的LRU策略,新图片加载后,如果解码前数据超过缓存上限,会删除最久未再次加载的图片数据缓存。建议根据应用内存需求,设置合理缓存上限,过大可能导致应用内存使用过高。 129 130setImageRawDataCacheSize方法需要在@Entry标记的页面,[onPageShow](../apis-arkui/arkui-ts/ts-custom-component-lifecycle.md#onpageshow)或[aboutToAppear](../apis-arkui/arkui-ts/ts-custom-component-lifecycle.md#abouttoappear)里面设置才生效。 131 132**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 133 134**系统能力:** SystemCapability.ArkUI.ArkUI.Full 135 136**参数:** 137 138| 参数名 | 类型 | 必填 | 说明 | 139| -------- | -------- | -------- | -------- | 140| value | number | 是 | 内存中解码前图片数据的缓存大小,单位为字节。number取值需大于0。 | 141 142**示例:** 143 144```ts 145// xxx.ets 146import app, { AppResponse } from '@system.app'; 147 148@Entry 149@Component 150struct Index { 151 onPageShow() { 152 // 设置解码前图片数据内存缓存上限为100MB (100MB=100*1024*1024B=104857600B) 153 app.setImageRawDataCacheSize(104857600); 154 console.info('Application onPageShow'); 155 } 156 onDestroy() { 157 console.info('Application onDestroy'); 158 } 159 160 build() { 161 Row(){ 162 // xxxxxxxxxxxxx为图片地址 163 Image('xxxxxxxxxxxxx') 164 .width(200) 165 .height(50) 166 }.width('100%') 167 } 168} 169``` 170 171### setImageFileCacheSize<sup>7+</sup> 172 173static setImageFileCacheSize(value: number): void 174 175设置图片文件缓存的大小上限,单位为字节,提升再次加载同源图片的加载速度,特别是对网络图源会有较明显提升。如果不设置则默认为100MB。缓存采用内置的LRU策略,新图片加载后,如果超过文件缓存上限,会按照时间由远到近删除缓存图片文件直到缓存图片大小满足缓存上限。建议根据应用实际需求,设置合理文件缓存上限,数字过大可能导致磁盘空间占用过高。 176 177**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 178 179**系统能力:** SystemCapability.ArkUI.ArkUI.Full 180 181**参数:** 182 183| 参数名 | 类型 | 必填 | 说明 | 184| -------- | -------- | -------- | -------- | 185| value | number | 是 | 图片文件的缓存大小,单位为字节。number取值需大于0。 | 186 187**示例:** 188 189```ts 190// app.ets 191import app, { AppResponse } from '@system.app'; 192 193export default class OnC { 194 onCreate() { 195 app.setImageFileCacheSize(209715200); 196 // 设置图片文件数据缓存上限为200MB (200MB=200*1024*1024B=209715200B) 197 console.info('Application onCreate'); 198 } 199 onDestroy() { 200 console.info('Application onDestroy'); 201 } 202} 203``` 204 205### ScreenOnVisible<sup>(deprecated)</sup> 206 207static screenOnVisible(options?: ScreenOnVisibleOptions): void 208 209定义屏幕唤醒时是否保持应用可见。 210 211该接口从API Version 8 开始废弃。 212 213**系统能力:** 以下各项对应的系统能力均为SystemCapability.ArkUI.ArkUI.Full 214 215| 名称 | 类型 | 必填 | 说明 | 216| ------- | ------------------------------------------------- | ---- | ------------------------------------------------------------ | 217| options | [ScreenOnVisibleOptions](#screenonvisibleoptions) | 否 | 当启动保活时,锁屏时将阻止系统返回桌面显示,以保持屏幕唤醒时应用可见。 | 218 219### requestFullWindow<sup>(deprecated)</sup> 220 221static requestFullWindow(options?: RequestFullWindowOptions): void 222 223请求应用以全窗口运行,FA在某些场景下(如半模态FA)会以非全窗口运行,调用该接口会从非全窗口切换为全窗口运行,如果已经以全窗口运行则该接口调用无效。 224 225从API Version 7开始,推荐使用[`@ohos.window`](arkts-apis-window.md)。 226 227**系统能力:** SystemCapability.ArkUI.ArkUI.Full 228 229**参数:** 230 231| 参数名 | 类型 | 必填 | 说明 | 232| ------- | ----------------------------------------------------- | ---- | ------------------------------------------------------------ | 233| options | [RequestFullWindowOptions](#requestfullwindowoptions) | 否 | 请求全屏时,设定非全屏到全屏的过渡时间,单位为毫秒,默认时间与非全屏到全屏的距离成正比。 | 234 235**示例:** 236 237```ts 238import app, { AppResponse } from '@system.app'; 239export default class Req { 240 requestFullWindow() { 241 app.requestFullWindow({ 242 duration: 200 243 }); 244 } 245} 246``` 247 248## AppResponse 249 250定义AppResponse信息。 251 252**原子化服务API:** 从API version 12开始,该接口支持在原子化服务中使用。 253 254**系统能力:** 以下各项对应的系统能力有所不同,详见下表。 255 256| 名称 | 类型 | 必填 | 说明 | 257| -------- | -------- | -------- |-------- | 258| appID<sup>6+</sup> | string | 是 | 表示应用的包名,用于标识应用的唯一性。 <br> **系统能力:** SystemCapability.ArkUI.ArkUI.Full| 259| appName | string | 是 | 表示应用的名称。 <br> **系统能力:** SystemCapability.ArkUI.ArkUI.Lite| 260| versionName | string | 是 | 表示应用的版本名称。 <br> **系统能力:** SystemCapability.ArkUI.ArkUI.Lite| 261| versionCode | number | 是 | 表示应用的版本号。 <br> **系统能力:** SystemCapability.ArkUI.ArkUI.Lite| 262 263## ScreenOnVisibleOptions 264 265定义屏幕上可见接口的选项。 266 267**系统能力:** 以下各项对应的系统能力均为SystemCapability.ArkUI.ArkUI.Full 268 269| 名称 | 类型 | 必填 | 说明 | 270| -------- | -------- | -------- | -------- | 271| visible | boolean | 否 | 是否启动保活,默认值false。 | 272| success | () => void | 否 | 接口调用成功的回调函数。 | 273| fail | (data: string, code: number) => void | 否 | 接口调用失败的回调函数。 | 274| complete | () => void | 否 | 接口调用结束的回调函数。 | 275 276## RequestFullWindowOptions 277 278定义RequestFullWindow接口的选项。 279 280**系统能力:** 以下各项对应的系统能力均为SystemCapability.ArkUI.ArkUI.Full 281 282| 名称 | 类型 | 必填 | 说明 | 283| -------- | -------- | -------- | -------- | 284| duration | number | 是 | 定义动画选项的持续时间,单位为毫秒。 | 285 286