在Android中,我有一个使用WritableArray的本地模块,如下所示:
public class UploadVideoModule extends ReactContextBaseJavaModule {
public WritableArray test=Arguments.createArray();
UploadCallBack uploadCallBack = new UploadCallBack() {
@Override
public void testArray(int i) {
test.pushString("aa "+i);
System.out.println("================= wa test ============test:"+test+" ,size:"+test.size());
} }
@Override
public String getName() {
return REACT_MODULE_NAME;
}
public UploadVideoModule(ReactApplicationContext reactContext) {
super(reactContext);
WritableArray wa=Arguments.createArray();
wa.pushString("aaaaaaaaa");
wa.pushString("bbbbbbbbb");
wa.pushString("ccccccccc");
Log.e(TAG,"======= wa ==========="+wa);
Log.e(TAG,"======= wa ==========size:"+wa.size());
for (int i =0;i<5;i++){
uploadCallBack.testArray(i);
}
}
interface UploadCallBack {
void testArray(int i);
}
}
// ================log结果===================
E/tvb.react.uploadvideo.UploadVideoModule:======= wa ==========="aaaaaaaaa","bbbbbbbbb","ccccccccc“======= wa ==========size:3
================= wa测试============test:"aa 0“,大小:1
================= wa测试============test:"aa 0","aa 1“,大小:1
================= wa测试============test:"aa 0","aa 1","aa 2“,大小:1
================= wa测试============test:"aa 0","aa 1","aa 2","aa 3“,大小:1
================= wa测试============test:"aa 0","aa 1","aa 2","aa 3","aa 4“,大小:1
这些结果太奇怪了!为什么wa的大小是正确的,但是test总是1?我发现当我用RN 0.51运行时,所有的都是正常的,大小是正确的!不幸的是,当运行在RN 0.55.4时,它有问题。
环境:
操作系统: macOS 10.13.4
节点: v9.9.0
npm: 5.6.0
守望者: 4.9.0
Android Studio: 3.1
软件包:(需要安装=> )
"react":"16.3.2",
"react-native":"0.55.4",//来自0.51 =>0.55.4
步骤复制复制上面的代码,然后在RN 0.51和0.55.4中运行,你会发现它不一样!!
发布于 2018-06-25 08:36:35
修复争用条件:ReadableNativeArray.setUseNativeAccessor(true);
https://stackoverflow.com/questions/50520817
复制相似问题