From fbe3d5351cfd08090120d96d0a41b0a889789957 Mon Sep 17 00:00:00 2001 From: zhongjianfei Date: Mon, 17 Jan 2022 11:36:44 +0800 Subject: [PATCH] zhongjianfei@huawei.com Signed-off-by: zhongjianfei Change-Id: Ida73fce264f0950bcc1cd8f1937979d2b77a4a31 --- interfaces/kits/napi/aafwk/formManager/BUILD.gn | 1 + .../napi/aafwk/formManager/napi_form_manager.cpp | 13 +++++++++++-- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/interfaces/kits/napi/aafwk/formManager/BUILD.gn b/interfaces/kits/napi/aafwk/formManager/BUILD.gn index b8e50a0567c..c03ccf4f1ca 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 edd1f274150..8d621a674af 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; } -- Gitee