使用Module调用Native方法

大约 2 分钟

使用Module调用Native方法

Kuikly开发中, 经常会有需要调用平台API的诉求, Kuikly是一个跨端的UI框架,本身不具备平台相关的能力,但是Kuikly提供了Module机制,方便你调用平台的API。

什么是Module

Module可以理解为平台API的统一接口模块,里面包含着对Native API的统一定义具体实现由各个平台实现Kuikly内置了一些核心的Module:

  1. NotifyModule: 通知模块, 可实现Kuikly页面与Kuikly页面,Kuikly页面与Native页面的双向通知
  2. MemoryCacheModule: 内存缓存模块, 可实现内存级别的缓存
  3. SharedPreferencesModule: 轻量级键值对磁盘缓存模块

如何获取Module实例

在Pager中获取Module

KuiklyPager在初始化的过程中会初始化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页面

上次编辑于: