Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/352.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
React本机模块-存储java类的最佳实践_Java_Reactjs_React Native_Kotlin_React Native Modules - Fatal编程技术网

React本机模块-存储java类的最佳实践

React本机模块-存储java类的最佳实践,java,reactjs,react-native,kotlin,react-native-modules,Java,Reactjs,React Native,Kotlin,React Native Modules,我正在用Kotlin构建一个React本机模块。我有一个外部Java SDK,可以在多个协议/网络/服务器上发现外围设备 有这样一个发现类: 类发现(params:params){ 有趣的开始{ // ... } 趣味站{ // ... } } 我想传递一个startDiscovery()和stopDiscovery()函数来响应桥接器 客户端可以在多个协议/服务器/上搜索多个设备。。。同时,。因此,它需要同时实例化许多发现类,并在必要时停止其中一些类。某种程度上是一堆发现 因此,我希望将对实

我正在用Kotlin构建一个React本机模块。我有一个外部Java SDK,可以在多个协议/网络/服务器上发现外围设备

有这样一个发现类:

类发现(params:params){
有趣的开始{
// ...
}
趣味站{
// ...
}
}
我想传递一个startDiscovery()stopDiscovery()函数来响应桥接器

客户端可以在多个协议/服务器/上搜索多个设备。。。同时,。因此,它需要同时实例化许多发现类,并在必要时停止其中一些类。某种程度上是一堆发现


因此,我希望将对实例化对象的引用传递给Javascript,以便它可以在每次调用另一个方法时返回给我。但是React桥不允许将Java对象传递给JavaScript。有什么好的模式可以这样做吗?

只需尝试在java中执行异步操作,这样线程就不会卡住,也不会失去性能(如果有异步操作,则返回承诺)

在javascript代码中

import { NativeModules } from 'react-native';
const dummyModule = NativeModules.DummyModule;

dummyModule.startMyClass();
// Make sure that u call the action when the class is instanciated.
dummyModule.fooActionClass();

谢谢你抽出时间。在我的例子中,客户端可能需要多次调用startMyClass()来创建多个对象。然后对其中任何一个调用fooActionClass()。所以我需要以某种方式存储一个对象的映射,可能带有一个关联的字符串标识符,以便稍后使用该标识符检索它们。有什么好方法可以这样做吗?为什么需要多次实例化它?在我的例子中,我使用了一个外部Java SDK,它有一个类,您可以实例化并开始创建一个基于多种协议(蓝牙、wifi、nfc等)的网络侦听器。您可以同时实例化“n”个侦听器以侦听多个IP、设备等。。。我希望我的JavaScript包遵循这个逻辑。我需要一个函数,它可以实例化并保留一个Java类,以便进行进一步的交互。在您的示例中,每个调用都覆盖对象实例化。我的问题是如何存储Java对象的“池”,或者是否有更好的模式可用于React Native。因此,我想您可以使用外部库这样的侦听器,而不是很多时候进行实例化。只需处理用户订阅的字符串数组,然后当您想要订阅时,调用另一个方法,该方法返回已订阅事件的字符串。在RN屏幕中,只需循环该数组并订阅所有事件。
import { NativeModules } from 'react-native';
const dummyModule = NativeModules.DummyModule;

dummyModule.startMyClass();
// Make sure that u call the action when the class is instanciated.
dummyModule.fooActionClass();