• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1# 原子化服务空间管理(仅对系统应用开放)
2
3从用户的角度,用户不感知原子化服务的安装,也不会主动的卸载原子化服务;从操作系统的角度,原子化服务使用[免安装特性](../reference/apis/js-apis-freeInstall.md),但并不是真的不安装。因此,为了减少系统空间占用,需要对原子化服务有序管理。
4
5## 原子化服务数据目录配额管理
6
7对原子化服务的数据沙箱目录设置存储配额上限,可通过系统参数persist.sys.bms.aging.policy.atomicservice.datasize.threshold获得,默认值50MB,当超过该配额限制时,写入数据返回失败。
8
9查看和设置系统参数可使用[param get/set](../../device-dev/subsystems/subsys-boot-init-plugin.md)命令
10
11## 主动销毁原子化服务
12
13可以通过[uninstall](../reference/apis/js-apis-installer.md#bundleinstalleruninstall)接口主动销毁原子化服务。
14
15**示例:**
16
17```ts
18import installer from '@ohos.bundle.installer';
19import { BusinessError } from '@ohos.base';
20
21let bundleName = 'com.ohos.demo';
22let installParam: installer.InstallParam = {
23    userId: 100
24};
25
26try {
27    installer.getBundleInstaller().then((data: installer.BundleInstaller) => {
28        data.uninstall(bundleName, installParam, (err: BusinessError) => {
29            if (err) {
30                console.error('uninstall failed:' + err.message);
31            } else {
32                console.info('uninstall successfully.');
33            }
34        });
35    }).catch((error: BusinessError) => {
36        console.error('getBundleInstaller failed. Cause: ' + error.message);
37    });
38} catch (error) {
39    let message = (error as BusinessError).message;
40    console.error('getBundleInstaller failed. Cause: ' + message);
41}
42```
43
44## 自动销毁原子化服务
45
46### 自动销毁时机
47
48- 定时器触发,其间隔可通过系统参数persist.sys.bms.aging.policy.timer.interval获得,默认8小时;要求剩余电量必须大于等于系统参数persist.sys.bms.aging.policy.battery.threshold,默认10%
49- 安装原子化服务时触发
50- 修改原子化服务可清理标识时触发
51
52### 销毁条件
53
54#### 原子化服务可销毁
55
56- 通过[isHapModuleRemovable](../reference/apis/js-apis-freeInstall.md#ishapmoduleremovable)返回true
57- 非运行状态
58
59#### 销毁开始条件
60
61当前系统所有原子化服务占用空间(包含安装目录和数据目录)大于系统参数persist.sys.bms.aging.policy.data.size.threshold,默认500MB
62
63#### 销毁结束条件
64
65当前系统所有原子化服务占用空间(包含安装目录和数据目录)小于系统参数persist.sys.bms.aging.policy.data.size.threshold的80%
66
67### 自动销毁顺序
68
69- 将可销毁的原子化服务按照最近使用时间区分到不同时间区域内,如[0, 10), [10, 20), [20, 30), [30, ~), 可通过系统参数persist.sys.bms.aging.policy.recently.used.threshold获得时间区域单位,默认是1天;
70- 对于两个可销毁的原子化服务,若处于同一时间区域内优先销毁使用频率低的原子化服务;若处于不同时间区域内优先销毁长时间未使用的原子化服务。
71
72### 分级自动销毁
73
74- 当满足自动销毁开始条件时,按照销毁顺序优先销毁原子化服务的cache目录,若满足销毁结束条件,则退出;
75- 若不满足,则按照销毁顺序再次清理原子化服务的其他目录。