使用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页面