场景介绍
开发者通过pthread_create创建新线程后,可以通过napi_create_ark_runtime
来创建一个新的ArkTs基础运行时环境,并通过该运行时环境加载ArkTs模块,目前仅支持在ArkTs模块中使用console
接口打印日志,使用timer
定时器功能。当使用结束后,开发者需要通过napi_destroy_ark_runtime
来销毁所创建的ArkTs基础运行时环境。
使用示例
- 接口声明、编译配置以及模块注册
接口声明
// index.d.ts
export const createArkRuntime: () => object;
编译配置
// CMakeLists.txt
# the minimum version of CMake.
cmake_minimum_required(VERSION 3.4.1)
project(MyApplication)set(NATIVERENDER_ROOT_PATH ${CMAKE_CURRENT_SOURCE_DIR})include_directories(${NATIVERENDER_ROOT_PATH}${NATIVERENDER_ROOT_PATH}/include)
add_library(entry SHARED create_ark_runtime.cpp)
target_link_libraries(entry PUBLIC libace_napi.z.so libhilog_ndk.z.so)
模块注册
// create_ark_runtime.cpp
EXTERN_C_START
static napi_value Init(napi_env env, napi_value exports)
{napi_property_descriptor desc[] = {{ "createArkRuntime", nullptr, CreateArkRuntime, nullptr, nullptr, nullptr, napi_default, nullptr }};napi_define_properties(env, exports, sizeof(desc) / sizeof(desc[0]), desc);return exports;
}
EXTERN_C_ENDstatic napi_module nativeModule = {.nm_version = 1,.nm_flags = 0,.nm_filename = nullptr,.nm_register_func = Init,.nm_modname = "entry",.nm_priv = nullptr,.reserved = { 0 },
};extern "C" __attribute__((constructor)) void RegisterQueueWorkModule()
{napi_module_register(&nativeModule);
}
- 新建线程并创建基ArkTs础运行时环境
// create_ark_runtime.cpp
#include <pthread.h>#include "napi/native_api.h"static void *CreateArkRuntimeFunc(void *arg)
{// 1. 创建基础运行环境napi_env env;napi_status ret = napi_create_ark_runtime(&env);if (ret != napi_ok) {return nullptr;}// 2. 加载自定义模块napi_value objUtils;ret = napi_load_module_with_info(env, "ets/pages/ObjectUtils", "com.exmaple.myapplication/entry", &objUtils);if (ret != napi_ok) {return nullptr;}// 3. 使用ArtTs中的loggernapi_value logger;ret = napi_get_named_property(env, objUtils, "Logger", &logger);if (ret != napi_ok) {return nullptr;}ret = napi_call_function(env, objUtils, logger, 0, nullptr, nullptr);// 4. 销毁arkts环境ret = napi_destroy_ark_runtime(&env);return nullptr;
}static napi_value CreateArkRuntime(napi_env env, napi_callback_info info)
{pthread_t tid;pthread_create(&tid, nullptr, CreateArkRuntimeFunc, nullptr);pthread_join(tid, nullptr);return nullptr;
}
- ArkTS侧示例代码
// ObjectUtils.ets
export function Logger() {console.log("print log");
}
为了能让大家更好的学习鸿蒙(HarmonyOS NEXT)开发技术,这边特意整理了《鸿蒙开发学习手册》(共计890页),希望对大家有所帮助:https://qr21.cn/FV7h05
《鸿蒙开发学习手册》:
如何快速入门:https://qr21.cn/FV7h05
- 基本概念
- 构建第一个ArkTS应用
- ……
开发基础知识:https://qr21.cn/FV7h05
- 应用基础知识
- 配置文件
- 应用数据管理
- 应用安全管理
- 应用隐私保护
- 三方应用调用管控机制
- 资源分类与访问
- 学习ArkTS语言
- ……
基于ArkTS 开发:https://qr21.cn/FV7h05
- Ability开发
- UI开发
- 公共事件与通知
- 窗口管理
- 媒体
- 安全
- 网络与链接
- 电话服务
- 数据管理
- 后台任务(Background Task)管理
- 设备管理
- 设备使用信息统计
- DFX
- 国际化开发
- 折叠屏系列
- ……
鸿蒙开发面试真题(含参考答案):https://qr18.cn/F781PH
鸿蒙开发面试大盘集篇(共计319页):https://qr18.cn/F781PH
1.项目开发必备面试题
2.性能优化方向
3.架构方向
4.鸿蒙开发系统底层方向
5.鸿蒙音视频开发方向
6.鸿蒙车载开发方向
7.鸿蒙南向开发方向