diff --git a/interfaces/kits/napi/aafwk/formManager/BUILD.gn b/interfaces/kits/napi/aafwk/formManager/BUILD.gn index b8e50a0567c5ff96f55e7fdff6dbd1dd2c1d888d..c03ccf4f1cadfa3ebd84bbce1f33d435668f7d33 100644 --- a/interfaces/kits/napi/aafwk/formManager/BUILD.gn +++ b/interfaces/kits/napi/aafwk/formManager/BUILD.gn @@ -36,6 +36,7 @@ ohos_shared_library("formmanager") { external_deps = [ "aafwk_standard:ability_manager", + "aafwk_standard:runtime", "aafwk_standard:want", "hiviewdfx_hilog_native:libhilog", ] diff --git a/interfaces/kits/napi/aafwk/formManager/napi_form_manager.cpp b/interfaces/kits/napi/aafwk/formManager/napi_form_manager.cpp index edd1f274150355c4f9b7faed362b719eb1e85ff9..8d621a674affba11d00dd626ad89dc7f718c8989 100644 --- a/interfaces/kits/napi/aafwk/formManager/napi_form_manager.cpp +++ b/interfaces/kits/napi/aafwk/formManager/napi_form_manager.cpp @@ -22,6 +22,7 @@ #include "napi/native_api.h" #include "napi/native_node_api.h" +#include "runtime.h" using namespace OHOS; using namespace OHOS::AAFwk; @@ -38,6 +39,7 @@ namespace { constexpr int DECIMAL_VALUE = 10; constexpr int BASE_NUMBER = 9; constexpr int REF_COUNT = 1; + OHOS::AppExecFwk::Ability* g_ability = nullptr; } /** @@ -66,7 +68,7 @@ OHOS::AppExecFwk::Ability* GetGlobalAbility(napi_env env) // get global value napi_value global = nullptr; napi_get_global(env, &global); - + // get ability napi_value abilityObj = nullptr; napi_get_named_property(env, global, "ability", &abilityObj); @@ -75,7 +77,14 @@ OHOS::AppExecFwk::Ability* GetGlobalAbility(napi_env env) OHOS::AppExecFwk::Ability* ability = nullptr; napi_get_value_external(env, abilityObj, (void**)&ability); HILOG_INFO("%{public}s, ability = [%{public}p]", __func__, ability); - + if (ability == nullptr) { + if (g_ability == nullptr) { + std::unique_ptr runtime; + g_ability = OHOS::AppExecFwk::Ability::Create(runtime); + } + ability = g_ability; + HILOG_INFO("%{public}s, Use Local tmp Ability for Stage Module", __func__); + } return ability; }