【发布时间】:2020-03-03 11:29:15
【问题描述】:
我正在使用 Sumup SDK 创建到 React Native 的桥梁。大部分艰苦的工作已经完成,但我正在尝试调用一个特定的函数来在处理交易之前唤醒读卡器。
我原来的代码是这样的:
@ReactMethod
public void prepareCardTerminal() {
SumUpAPI.prepareForCheckout();
}
}
然后 RN 网桥会像这样调用这个函数:
static prepareCardTerminal() {
NativeRNSumup.prepareCardTerminal();
}
这给了我一个 React Native 错误:
Must be called on main thread
我读到这可能意味着它需要在 UI 线程上运行,所以我将函数重写为:
@ReactMethod
public void prepareCardTerminal() {
new Thread(new Runnable() {
public void run() {
SumUpAPI.prepareForCheckout();
}
});
}
但是这并没有达到预期的结果(即使它没有显示任何错误)。
任何提示将不胜感激。
编辑:我找到了解决此问题的方法。我使用了 UiThreadUtil:
import com.facebook.react.bridge.UiThreadUtil;
...
@ReactMethod
public void prepareCardTerminal() {
UiThreadUtil.runOnUiThread(new Runnable() {
@Override
public void run() {
SumUpAPI.prepareForCheckout();
}
});
}
【问题讨论】:
标签: java android react-native react-native-android android-runonuithread