Oracle 发表于 2025-3-30 16:58:53

OpenHarmony 4.0 Release 循环拉起应用功能

需求场景:有部分应用在异常退出时希望重新被启动,无需用户手动操作。

需求分析:

我们还是可以使用在某个常驻服务来实现拉起操作,还是走launcher创建窗口时来实现。此时我们需要去监听某个应用被杀死的状态,刚好 appManager.on(‘applicationState’, applicationStateObserver)这个接口实现了监听应用的状态,并在onProcessDied中可以查询到指定应用的bundleName列表,依赖来实现再次拉起指定应用的场景。
代码示例:

            //新增需求,xxx应用被杀掉后需要再此被拉起
            let applicationStateObserver: appManager.ApplicationStateObserver = {
            onForegroundApplicationChanged(appStateData) {
                console.log(` onForegroundApplicationChanged: ${JSON.stringify(appStateData)}`);
            },
            onAbilityStateChanged(abilityStateData) {
                console.log(` onAbilityStateChanged: ${JSON.stringify(abilityStateData)}`);
            },
            onProcessCreated(processData) {
                console.log(` onProcessCreated: ${JSON.stringify(processData)}`);
            },
            onProcessDied(processData) {
                console.log(` onProcessDied: ${JSON.stringify(processData)}`);
                if(processData.bundleName === 'com.xx.xxx'){
                  if (systemparameter.getSync('persist.autostart.xxx', '0') === '1') {
                  setTimeout(() => {
                      let want = {
                        "deviceId": "",
                        "bundleName": "com.xx.xxx",
                        "abilityName": "EntryAbility"
                      };
                      globalThis.desktopContext.startAbility(want).then(() => {
                        Log.showInfo(TAG, ' OneFan processData startAbility success');
                      }).catch((error) => {
                        Log.showInfo(TAG, ' OneFan processData startAbility failed');
                      })
                  }, 500)
                  } else {
                  Log.showInfo(TAG, ' OneFan processData persist.autostart.dts err');
                  }
                }
            },
            onProcessStateChanged(processData) {
                console.log(` onProcessStateChanged: ${JSON.stringify(processData)}`);
            }
            };
            try {
            const observerId = appManager.on('applicationState', applicationStateObserver);
            console.log(` observerCode: ${observerId}`);
            } catch (paramError) {
            let code = (paramError as BusinessError).code;
            let message = (paramError as BusinessError).message;
            console.error(` error: ${code}, ${message} `);
            }
            //新增需求,xxx应用被杀掉后需要再此被拉起而相对于服务型应用来说,我们只需要在install_list_capability.json及签名中配置keepAlive为true即可。

2z0y0z0 发表于 2025-3-30 16:59:12

学会了学会了谢谢🙏

Gregoryoxymn 发表于 2025-8-7 02:29:19

инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо
инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо
инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инйо инфо инфо
инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо
инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо
инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо
инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо
инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо

Gregoryoxymn 发表于 2025-8-9 01:59:28

http://tuchkas.ru/
页: [1]
查看完整版本: OpenHarmony 4.0 Release 循环拉起应用功能