161847f8eSopenharmony_ci/* 261847f8eSopenharmony_ci * Copyright (c) 2022-2023 Huawei Device Co., Ltd. 361847f8eSopenharmony_ci * Licensed under the Apache License, Version 2.0 (the "License"), 461847f8eSopenharmony_ci * you may not use this file except in compliance with the License. 561847f8eSopenharmony_ci * You may obtain a copy of the License at 661847f8eSopenharmony_ci * 761847f8eSopenharmony_ci * http://www.apache.org/licenses/LICENSE-2.0 861847f8eSopenharmony_ci * 961847f8eSopenharmony_ci * Unless required by applicable law or agreed to in writing, software 1061847f8eSopenharmony_ci * distributed under the License is distributed on an "AS IS" BASIS, 1161847f8eSopenharmony_ci * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1261847f8eSopenharmony_ci * See the License for the specific language governing permissions and 1361847f8eSopenharmony_ci * limitations under the License. 1461847f8eSopenharmony_ci */ 1561847f8eSopenharmony_ci 1661847f8eSopenharmony_ci/** 1761847f8eSopenharmony_ci * @file 1861847f8eSopenharmony_ci * @kit AbilityKit 1961847f8eSopenharmony_ci */ 2061847f8eSopenharmony_ci 2161847f8eSopenharmony_ciimport UIAbilityContext from './application/UIAbilityContext'; 2261847f8eSopenharmony_ciimport Want from './@ohos.app.ability.Want'; 2361847f8eSopenharmony_ci 2461847f8eSopenharmony_ci/** 2561847f8eSopenharmony_ci * This module provides the capability of app recovery. 2661847f8eSopenharmony_ci * You can use this capability to save state and restart the application 2761847f8eSopenharmony_ci * which let end user continue their workflow when app error occurs. 2861847f8eSopenharmony_ci * This api support restart the app when js crash or app freeze occurs currently. 2961847f8eSopenharmony_ci * 3061847f8eSopenharmony_ci * @namespace appRecovery 3161847f8eSopenharmony_ci * @syscap SystemCapability.Ability.AbilityRuntime.Core 3261847f8eSopenharmony_ci * @since 9 3361847f8eSopenharmony_ci */ 3461847f8eSopenharmony_ci/** 3561847f8eSopenharmony_ci * This module provides the capability of app recovery. 3661847f8eSopenharmony_ci * You can use this capability to save state and restart the application 3761847f8eSopenharmony_ci * which let end user continue their workflow when app error occurs. 3861847f8eSopenharmony_ci * This api support restart the app when js crash or app freeze occurs currently. 3961847f8eSopenharmony_ci * 4061847f8eSopenharmony_ci * @namespace appRecovery 4161847f8eSopenharmony_ci * @syscap SystemCapability.Ability.AbilityRuntime.Core 4261847f8eSopenharmony_ci * @atomicservice 4361847f8eSopenharmony_ci * @since 11 4461847f8eSopenharmony_ci */ 4561847f8eSopenharmony_cideclare namespace appRecovery { 4661847f8eSopenharmony_ci /** 4761847f8eSopenharmony_ci * The flag that determines when to restart you app. 4861847f8eSopenharmony_ci * 4961847f8eSopenharmony_ci * @enum { number } 5061847f8eSopenharmony_ci * @syscap SystemCapability.Ability.AbilityRuntime.Core 5161847f8eSopenharmony_ci * @since 9 5261847f8eSopenharmony_ci */ 5361847f8eSopenharmony_ci /** 5461847f8eSopenharmony_ci * The flag that determines when to restart you app. 5561847f8eSopenharmony_ci * 5661847f8eSopenharmony_ci * @enum { number } 5761847f8eSopenharmony_ci * @syscap SystemCapability.Ability.AbilityRuntime.Core 5861847f8eSopenharmony_ci * @atomicservice 5961847f8eSopenharmony_ci * @since 11 6061847f8eSopenharmony_ci */ 6161847f8eSopenharmony_ci enum RestartFlag { 6261847f8eSopenharmony_ci /** 6361847f8eSopenharmony_ci * No restart restrictions. 6461847f8eSopenharmony_ci * 6561847f8eSopenharmony_ci * @syscap SystemCapability.Ability.AbilityRuntime.Core 6661847f8eSopenharmony_ci * @since 9 6761847f8eSopenharmony_ci */ 6861847f8eSopenharmony_ci /** 6961847f8eSopenharmony_ci * No restart restrictions. 7061847f8eSopenharmony_ci * 7161847f8eSopenharmony_ci * @syscap SystemCapability.Ability.AbilityRuntime.Core 7261847f8eSopenharmony_ci * @atomicservice 7361847f8eSopenharmony_ci * @since 11 7461847f8eSopenharmony_ci */ 7561847f8eSopenharmony_ci ALWAYS_RESTART = 0, 7661847f8eSopenharmony_ci 7761847f8eSopenharmony_ci /** 7861847f8eSopenharmony_ci * Restart if current app process encounter uncaught js/ts/ets exception. 7961847f8eSopenharmony_ci * 8061847f8eSopenharmony_ci * @syscap SystemCapability.Ability.AbilityRuntime.Core 8161847f8eSopenharmony_ci * @since 9 8261847f8eSopenharmony_ci */ 8361847f8eSopenharmony_ci /** 8461847f8eSopenharmony_ci * Restart if current app process encounter uncaught js/ts/ets exception. 8561847f8eSopenharmony_ci * 8661847f8eSopenharmony_ci * @syscap SystemCapability.Ability.AbilityRuntime.Core 8761847f8eSopenharmony_ci * @atomicservice 8861847f8eSopenharmony_ci * @since 11 8961847f8eSopenharmony_ci */ 9061847f8eSopenharmony_ci RESTART_WHEN_JS_CRASH = 0x0001, 9161847f8eSopenharmony_ci 9261847f8eSopenharmony_ci /** 9361847f8eSopenharmony_ci * Restart if the main thread of current app process block more than 6 seconds. 9461847f8eSopenharmony_ci * 9561847f8eSopenharmony_ci * @syscap SystemCapability.Ability.AbilityRuntime.Core 9661847f8eSopenharmony_ci * @since 9 9761847f8eSopenharmony_ci */ 9861847f8eSopenharmony_ci /** 9961847f8eSopenharmony_ci * Restart if the main thread of current app process block more than 6 seconds. 10061847f8eSopenharmony_ci * 10161847f8eSopenharmony_ci * @syscap SystemCapability.Ability.AbilityRuntime.Core 10261847f8eSopenharmony_ci * @atomicservice 10361847f8eSopenharmony_ci * @since 11 10461847f8eSopenharmony_ci */ 10561847f8eSopenharmony_ci RESTART_WHEN_APP_FREEZE = 0x0002, 10661847f8eSopenharmony_ci 10761847f8eSopenharmony_ci /** 10861847f8eSopenharmony_ci * Do not restart in any scenario. 10961847f8eSopenharmony_ci * 11061847f8eSopenharmony_ci * @syscap SystemCapability.Ability.AbilityRuntime.Core 11161847f8eSopenharmony_ci * @since 9 11261847f8eSopenharmony_ci */ 11361847f8eSopenharmony_ci /** 11461847f8eSopenharmony_ci * Do not restart in any scenario. 11561847f8eSopenharmony_ci * 11661847f8eSopenharmony_ci * @syscap SystemCapability.Ability.AbilityRuntime.Core 11761847f8eSopenharmony_ci * @atomicservice 11861847f8eSopenharmony_ci * @since 11 11961847f8eSopenharmony_ci */ 12061847f8eSopenharmony_ci NO_RESTART = 0xFFFF 12161847f8eSopenharmony_ci } 12261847f8eSopenharmony_ci 12361847f8eSopenharmony_ci /** 12461847f8eSopenharmony_ci * The flag that determines when to save ability state. 12561847f8eSopenharmony_ci * When start saving ability state, the { ohos.app.ability.UiAbility.onSaveState } will be called and 12661847f8eSopenharmony_ci * the page stack of current ability will be saved automatically. 12761847f8eSopenharmony_ci * 12861847f8eSopenharmony_ci * @enum { number } 12961847f8eSopenharmony_ci * @syscap SystemCapability.Ability.AbilityRuntime.Core 13061847f8eSopenharmony_ci * @since 9 13161847f8eSopenharmony_ci */ 13261847f8eSopenharmony_ci /** 13361847f8eSopenharmony_ci * The flag that determines when to save ability state. 13461847f8eSopenharmony_ci * When start saving ability state, the { ohos.app.ability.UiAbility.onSaveState } will be called and 13561847f8eSopenharmony_ci * the page stack of current ability will be saved automatically. 13661847f8eSopenharmony_ci * 13761847f8eSopenharmony_ci * @enum { number } 13861847f8eSopenharmony_ci * @syscap SystemCapability.Ability.AbilityRuntime.Core 13961847f8eSopenharmony_ci * @atomicservice 14061847f8eSopenharmony_ci * @since 11 14161847f8eSopenharmony_ci */ 14261847f8eSopenharmony_ci enum SaveOccasionFlag { 14361847f8eSopenharmony_ci /** 14461847f8eSopenharmony_ci * Saving ability state when an error occurs. 14561847f8eSopenharmony_ci * The error in current situation has the same semantic with { errorManager } defines 14661847f8eSopenharmony_ci * which means the state that the application cannot continue to work but allows developer to handle. 14761847f8eSopenharmony_ci * 14861847f8eSopenharmony_ci * @syscap SystemCapability.Ability.AbilityRuntime.Core 14961847f8eSopenharmony_ci * @since 9 15061847f8eSopenharmony_ci */ 15161847f8eSopenharmony_ci /** 15261847f8eSopenharmony_ci * Saving ability state when an error occurs. 15361847f8eSopenharmony_ci * The error in current situation has the same semantic with { errorManager } defines 15461847f8eSopenharmony_ci * which means the state that the application cannot continue to work but allows developer to handle. 15561847f8eSopenharmony_ci * 15661847f8eSopenharmony_ci * @syscap SystemCapability.Ability.AbilityRuntime.Core 15761847f8eSopenharmony_ci * @atomicservice 15861847f8eSopenharmony_ci * @since 11 15961847f8eSopenharmony_ci */ 16061847f8eSopenharmony_ci SAVE_WHEN_ERROR = 0x0001, 16161847f8eSopenharmony_ci 16261847f8eSopenharmony_ci /** 16361847f8eSopenharmony_ci * Saving ability state when ability is in background. 16461847f8eSopenharmony_ci * 16561847f8eSopenharmony_ci * @syscap SystemCapability.Ability.AbilityRuntime.Core 16661847f8eSopenharmony_ci * @since 9 16761847f8eSopenharmony_ci */ 16861847f8eSopenharmony_ci /** 16961847f8eSopenharmony_ci * Saving ability state when ability is in background. 17061847f8eSopenharmony_ci * 17161847f8eSopenharmony_ci * @syscap SystemCapability.Ability.AbilityRuntime.Core 17261847f8eSopenharmony_ci * @atomicservice 17361847f8eSopenharmony_ci * @since 11 17461847f8eSopenharmony_ci */ 17561847f8eSopenharmony_ci SAVE_WHEN_BACKGROUND = 0x0002 17661847f8eSopenharmony_ci } 17761847f8eSopenharmony_ci 17861847f8eSopenharmony_ci /** 17961847f8eSopenharmony_ci * The flag that determines how to save the ability state. 18061847f8eSopenharmony_ci * 18161847f8eSopenharmony_ci * @enum { number } 18261847f8eSopenharmony_ci * @syscap SystemCapability.Ability.AbilityRuntime.Core 18361847f8eSopenharmony_ci * @since 9 18461847f8eSopenharmony_ci */ 18561847f8eSopenharmony_ci /** 18661847f8eSopenharmony_ci * The flag that determines how to save the ability state. 18761847f8eSopenharmony_ci * 18861847f8eSopenharmony_ci * @enum { number } 18961847f8eSopenharmony_ci * @syscap SystemCapability.Ability.AbilityRuntime.Core 19061847f8eSopenharmony_ci * @atomicservice 19161847f8eSopenharmony_ci * @since 11 19261847f8eSopenharmony_ci */ 19361847f8eSopenharmony_ci enum SaveModeFlag { 19461847f8eSopenharmony_ci /** 19561847f8eSopenharmony_ci * Save state to file immediately. 19661847f8eSopenharmony_ci * 19761847f8eSopenharmony_ci * @syscap SystemCapability.Ability.AbilityRuntime.Core 19861847f8eSopenharmony_ci * @since 9 19961847f8eSopenharmony_ci */ 20061847f8eSopenharmony_ci /** 20161847f8eSopenharmony_ci * Save state to file immediately. 20261847f8eSopenharmony_ci * 20361847f8eSopenharmony_ci * @syscap SystemCapability.Ability.AbilityRuntime.Core 20461847f8eSopenharmony_ci * @atomicservice 20561847f8eSopenharmony_ci * @since 11 20661847f8eSopenharmony_ci */ 20761847f8eSopenharmony_ci SAVE_WITH_FILE = 0x0001, 20861847f8eSopenharmony_ci 20961847f8eSopenharmony_ci /** 21061847f8eSopenharmony_ci * Keep state in memory and flush to file when error occurs or { restartApp } is invoked. 21161847f8eSopenharmony_ci * 21261847f8eSopenharmony_ci * @syscap SystemCapability.Ability.AbilityRuntime.Core 21361847f8eSopenharmony_ci * @since 9 21461847f8eSopenharmony_ci */ 21561847f8eSopenharmony_ci /** 21661847f8eSopenharmony_ci * Keep state in memory and flush to file when error occurs or { restartApp } is invoked. 21761847f8eSopenharmony_ci * 21861847f8eSopenharmony_ci * @syscap SystemCapability.Ability.AbilityRuntime.Core 21961847f8eSopenharmony_ci * @atomicservice 22061847f8eSopenharmony_ci * @since 11 22161847f8eSopenharmony_ci */ 22261847f8eSopenharmony_ci SAVE_WITH_SHARED_MEMORY = 0x0002 22361847f8eSopenharmony_ci } 22461847f8eSopenharmony_ci 22561847f8eSopenharmony_ci /** 22661847f8eSopenharmony_ci * Enable appRecovery function. 22761847f8eSopenharmony_ci * 22861847f8eSopenharmony_ci * @param { RestartFlag } [restart] - The flag that determines the restart cases of your app, default value is { ALWAYS_RESTART }. 22961847f8eSopenharmony_ci * @param { SaveOccasionFlag } [saveOccasion] - The flag that determines when to save ability state, default value is { SAVE_WHEN_ERROR }. 23061847f8eSopenharmony_ci * @param { SaveModeFlag } [saveMode] - The flag that determines how to save the ability state, default value is { SAVE_WITH_FILE }. 23161847f8eSopenharmony_ci * @syscap SystemCapability.Ability.AbilityRuntime.Core 23261847f8eSopenharmony_ci * @StageModelOnly 23361847f8eSopenharmony_ci * @since 9 23461847f8eSopenharmony_ci */ 23561847f8eSopenharmony_ci /** 23661847f8eSopenharmony_ci * Enable appRecovery function. 23761847f8eSopenharmony_ci * 23861847f8eSopenharmony_ci * @param { RestartFlag } [restart] - The flag that determines the restart cases of your app, default value is { ALWAYS_RESTART }. 23961847f8eSopenharmony_ci * @param { SaveOccasionFlag } [saveOccasion] - The flag that determines when to save ability state, default value is { SAVE_WHEN_ERROR }. 24061847f8eSopenharmony_ci * @param { SaveModeFlag } [saveMode] - The flag that determines how to save the ability state, default value is { SAVE_WITH_FILE }. 24161847f8eSopenharmony_ci * @syscap SystemCapability.Ability.AbilityRuntime.Core 24261847f8eSopenharmony_ci * @StageModelOnly 24361847f8eSopenharmony_ci * @atomicservice 24461847f8eSopenharmony_ci * @since 11 24561847f8eSopenharmony_ci */ 24661847f8eSopenharmony_ci function enableAppRecovery(restart?: RestartFlag, saveOccasion?: SaveOccasionFlag, saveMode?: SaveModeFlag): void; 24761847f8eSopenharmony_ci 24861847f8eSopenharmony_ci /** 24961847f8eSopenharmony_ci * Restart current process and launch the first ability(the entry ability in most cases) of current process. 25061847f8eSopenharmony_ci * The previous saved state will be filled in the { want.wantParams } of { UIAbility.onCreate } interface. 25161847f8eSopenharmony_ci * and the { param } of { UIAbility.onCreate } will be set to APP_RECOVERY. 25261847f8eSopenharmony_ci * 25361847f8eSopenharmony_ci * @syscap SystemCapability.Ability.AbilityRuntime.Core 25461847f8eSopenharmony_ci * @StageModelOnly 25561847f8eSopenharmony_ci * @since 9 25661847f8eSopenharmony_ci */ 25761847f8eSopenharmony_ci /** 25861847f8eSopenharmony_ci * Restart current process and launch the first ability(the entry ability in most cases) of current process. 25961847f8eSopenharmony_ci * The previous saved state will be filled in the { want.wantParams } of { UIAbility.onCreate } interface. 26061847f8eSopenharmony_ci * and the { param } of { UIAbility.onCreate } will be set to APP_RECOVERY. 26161847f8eSopenharmony_ci * 26261847f8eSopenharmony_ci * @syscap SystemCapability.Ability.AbilityRuntime.Core 26361847f8eSopenharmony_ci * @StageModelOnly 26461847f8eSopenharmony_ci * @atomicservice 26561847f8eSopenharmony_ci * @since 11 26661847f8eSopenharmony_ci */ 26761847f8eSopenharmony_ci function restartApp(): void; 26861847f8eSopenharmony_ci 26961847f8eSopenharmony_ci /** 27061847f8eSopenharmony_ci * Set the want that will be used when app restart initiated by appRecovery. 27161847f8eSopenharmony_ci * 27261847f8eSopenharmony_ci * @param { Want } want - that defines the ability you want to start 27361847f8eSopenharmony_ci * @syscap SystemCapability.Ability.AbilityRuntime.Core 27461847f8eSopenharmony_ci * @StageModelOnly 27561847f8eSopenharmony_ci * @since 10 27661847f8eSopenharmony_ci */ 27761847f8eSopenharmony_ci /** 27861847f8eSopenharmony_ci * Set the want that will be used when app restart initiated by appRecovery. 27961847f8eSopenharmony_ci * 28061847f8eSopenharmony_ci * @param { Want } want - that defines the ability you want to start 28161847f8eSopenharmony_ci * @syscap SystemCapability.Ability.AbilityRuntime.Core 28261847f8eSopenharmony_ci * @StageModelOnly 28361847f8eSopenharmony_ci * @atomicservice 28461847f8eSopenharmony_ci * @since 11 28561847f8eSopenharmony_ci */ 28661847f8eSopenharmony_ci function setRestartWant(want: Want): void; 28761847f8eSopenharmony_ci 28861847f8eSopenharmony_ci /** 28961847f8eSopenharmony_ci * Actively save application state. 29061847f8eSopenharmony_ci * The ability framework will call { UIAbility.onSaveState } of first launched ability and 29161847f8eSopenharmony_ci * persist state as { saveOccasion } flag from { enableAppRecovery } interface. 29261847f8eSopenharmony_ci * 29361847f8eSopenharmony_ci * @returns { boolean } true if save data successfully, otherwise false. 29461847f8eSopenharmony_ci * @syscap SystemCapability.Ability.AbilityRuntime.Core 29561847f8eSopenharmony_ci * @StageModelOnly 29661847f8eSopenharmony_ci * @since 9 29761847f8eSopenharmony_ci */ 29861847f8eSopenharmony_ci /** 29961847f8eSopenharmony_ci * Actively save application state. 30061847f8eSopenharmony_ci * The ability framework will call { UIAbility.onSaveState } of first launched ability and 30161847f8eSopenharmony_ci * persist state as { saveOccasion } flag from { enableAppRecovery } interface. 30261847f8eSopenharmony_ci * 30361847f8eSopenharmony_ci * @returns { boolean } true if save data successfully, otherwise false. 30461847f8eSopenharmony_ci * @syscap SystemCapability.Ability.AbilityRuntime.Core 30561847f8eSopenharmony_ci * @StageModelOnly 30661847f8eSopenharmony_ci * @atomicservice 30761847f8eSopenharmony_ci * @since 11 30861847f8eSopenharmony_ci */ 30961847f8eSopenharmony_ci function saveAppState(): boolean; 31061847f8eSopenharmony_ci /** 31161847f8eSopenharmony_ci * Save the ability state according to the context. 31261847f8eSopenharmony_ci * 31361847f8eSopenharmony_ci * @param { UIAbilityContext } [context] - context indicates the ability context you want to save state. 31461847f8eSopenharmony_ci * If context is not specified, the onSaveState will be invoked on all the recoverable abilities in current process. 31561847f8eSopenharmony_ci * @returns { boolean } true if save data successfully, otherwise false. 31661847f8eSopenharmony_ci * @syscap SystemCapability.Ability.AbilityRuntime.Core 31761847f8eSopenharmony_ci * @StageModelOnly 31861847f8eSopenharmony_ci * @since 10 31961847f8eSopenharmony_ci */ 32061847f8eSopenharmony_ci /** 32161847f8eSopenharmony_ci * Save the ability state according to the context. 32261847f8eSopenharmony_ci * 32361847f8eSopenharmony_ci * @param { UIAbilityContext } [context] - context indicates the ability context you want to save state. 32461847f8eSopenharmony_ci * If context is not specified, the onSaveState will be invoked on all the recoverable abilities in current process. 32561847f8eSopenharmony_ci * @returns { boolean } true if save data successfully, otherwise false. 32661847f8eSopenharmony_ci * @syscap SystemCapability.Ability.AbilityRuntime.Core 32761847f8eSopenharmony_ci * @StageModelOnly 32861847f8eSopenharmony_ci * @atomicservice 32961847f8eSopenharmony_ci * @since 11 33061847f8eSopenharmony_ci */ 33161847f8eSopenharmony_ci function saveAppState(context?: UIAbilityContext): boolean; 33261847f8eSopenharmony_ci} 33361847f8eSopenharmony_ci 33461847f8eSopenharmony_ciexport default appRecovery; 335