使用Module调用Native方法
大约 2 分钟
使用Module调用Native方法
在Kuikly开发中, 经常会有需要调用平台API的诉求, Kuikly是一个跨端的UI框架,本身不具备平台相关的能力,但是Kuikly提供了Module机制,方便你调用平台的API。
什么是Module
Module可以理解为平台API的统一接口模块,里面包含着对Native API的统一定义,具体实现由各个平台实现。Kuikly内置了一些核心的Module:
- NotifyModule: 通知模块, 可实现
Kuikly页面与Kuikly页面,Kuikly页面与Native页面的双向通知 - MemoryCacheModule: 内存缓存模块, 可实现内存级别的缓存
- SharedPreferencesModule: 轻量级键值对磁盘缓存模块
如何获取Module实例
在Pager中获取Module
Kuikly的Pager在初始化的过程中会初始化Pager注册的Module,我们可以在Pager初始化完成以后, 获取Module,以下是获取MemoryCacheModule的示例
internal class HelloWorldPage : Pager() {
override fun created() {
super.created()
// 1. 通过acquireModule<T>(moduleName)获取Module, 如果找不到Module的话会抛异常
val cacheModule = acquireModule<MemoryCacheModule>(MemoryCacheModule.MODULE_NAME)
// 2. getModule<T>(moduleName)获取Module, 如果找不到Module的话返回null
val cacheModule1 = getModule<MemoryCacheModule>(MemoryCacheModule.MODULE_NAME)
}
}
在组合组件中获取Module
如果你想在组合组件中获取Module, 你可以这样获取:
class TestComposeView : ComposeView<ComposeAttr, ComposeEvent>() {
override fun created() {
super.created()
// 1. 通过acquireModule<T>(moduleName)获取Module, 如果找不到Module的话会抛异常
val cacheModule = acquireModule<MemoryCacheModule>(MemoryCacheModule.MODULE_NAME)
// 2. getModule<T>(moduleName)获取Module, 如果找不到Module的话返回null
val cacheModule1 = getModule<MemoryCacheModule>(MemoryCacheModule.MODULE_NAME)
}
}
其他地方获取Module
如果你可能会想在非Pager类和非组合组件中获取Module, 你获取当前的Pager示例,通过Pager来获取Module
class Test {
fun setValue(v: Int) {
val cacheModule = PagerManager.getCurrentPager()
.acquireModule<MemoryCacheModule>(MemoryCacheModule.MODULE_NAME)
cacheModule.setObject("test", v)
}
}
下一步
在了解完如何获取Module示例后, 下一步,我们来看如何使用RouterModule来打开和关闭Kuikly页面