查看: 233|回复: 3

OpenHarmony 4.0 Release 循环拉起应用功能

[复制链接]

1

主题

6

回帖

17

积分

新手上路

积分
17
发表于 2025-3-30 16:58:53 | 显示全部楼层 |阅读模式
需求场景:有部分应用在异常退出时希望重新被启动,无需用户手动操作。

需求分析:

我们还是可以使用在某个常驻服务来实现拉起操作,还是走launcher创建窗口时来实现。此时我们需要去监听某个应用被杀死的状态,刚好 appManager.on(‘applicationState’, applicationStateObserver)这个接口实现了监听应用的状态,并在onProcessDied中可以查询到指定应用的bundleName列表,依赖来实现再次拉起指定应用的场景。
代码示例:
  1.             //新增需求,xxx应用被杀掉后需要再此被拉起
  2.             let applicationStateObserver: appManager.ApplicationStateObserver = {
  3.               onForegroundApplicationChanged(appStateData) {
  4.                 console.log(`[appManager] onForegroundApplicationChanged: ${JSON.stringify(appStateData)}`);
  5.               },
  6.               onAbilityStateChanged(abilityStateData) {
  7.                 console.log(`[appManager] onAbilityStateChanged: ${JSON.stringify(abilityStateData)}`);
  8.               },
  9.               onProcessCreated(processData) {
  10.                 console.log(`[appManager] onProcessCreated: ${JSON.stringify(processData)}`);
  11.               },
  12.               onProcessDied(processData) {
  13.                 console.log(`[appManager] onProcessDied: ${JSON.stringify(processData)}`);
  14.                 if(processData.bundleName === 'com.xx.xxx'){
  15.                   if (systemparameter.getSync('persist.autostart.xxx', '0') === '1') {
  16.                     setTimeout(() => {
  17.                       let want = {
  18.                         "deviceId": "",
  19.                         "bundleName": "com.xx.xxx",
  20.                         "abilityName": "EntryAbility"
  21.                       };
  22.                       globalThis.desktopContext.startAbility(want).then(() => {
  23.                         Log.showInfo(TAG, '[appManager] OneFan processData startAbility success');
  24.                       }).catch((error) => {
  25.                         Log.showInfo(TAG, '[appManager] OneFan processData startAbility failed');
  26.                       })
  27.                     }, 500)
  28.                   } else {
  29.                     Log.showInfo(TAG, '[appManager] OneFan processData persist.autostart.dts err');
  30.                   }
  31.                 }
  32.               },
  33.               onProcessStateChanged(processData) {
  34.                 console.log(`[appManager] onProcessStateChanged: ${JSON.stringify(processData)}`);
  35.               }
  36.             };
  37.             try {
  38.               const observerId = appManager.on('applicationState', applicationStateObserver);
  39.               console.log(`[appManager] observerCode: ${observerId}`);
  40.             } catch (paramError) {
  41.               let code = (paramError as BusinessError).code;
  42.               let message = (paramError as BusinessError).message;
  43.               console.error(`[appManager] error: ${code}, ${message} `);
  44.             }
  45.             //新增需求,xxx应用被杀掉后需要再此被拉起
复制代码
而相对于服务型应用来说,我们只需要在install_list_capability.json及签名中配置keepAlive为true即可。

0

主题

5

回帖

10

积分

新手上路

积分
10
发表于 2025-3-30 16:59:12 | 显示全部楼层
学会了学会了谢谢🙏

0

主题

391

回帖

810

积分

高级会员

积分
810
发表于 2025-8-7 02:29:19 | 显示全部楼层
инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо  
инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо  
инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инйо инфо инфо  
инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо  
инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо  
инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо  
инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо  
инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо инфо

0

主题

391

回帖

810

积分

高级会员

积分
810
发表于 2025-8-9 01:59:28 | 显示全部楼层
http://tuchkas.ru/
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表