Val*_*eri 2 android react-native react-native-android
我需要MainActivity通过以下方式在onCreate函数中调用本机模块:context.getNativeModule(RNBackgroundToForegroundServiceModule.class)
但是我不确定如何获得当前的电流ReactContext。
我尝试使用(ReactContext) getApplicationContext()但崩溃了。
我如何获得有效证明ReactContext?
我自己想出了正确的答案。
我们必须等到Javascript捆绑包加载完毕。
ReactInstanceManager mReactInstanceManager = getReactNativeHost().getReactInstanceManager();
ReactApplicationContext context = (ReactApplicationContext) mReactInstanceManager.getCurrentReactContext();
mReactInstanceManager.addReactInstanceEventListener(new ReactInstanceManager.ReactInstanceEventListener() {
public void onReactContextInitialized(ReactContext validContext) {
// Use validContext here
}
});Run Code Online (Sandbox Code Playgroud)
在您的ReactActivity中使用它:
getReactNativeHost().getReactInstanceManager().getCurrentReactContext();
Run Code Online (Sandbox Code Playgroud)
只需确保在Application类中实现了ReactApplication。
重要信息:
因为有UI线程和JS线程,所以ReactContext可用需要一些时间,因此在“ onCreate”中,您可以使用延迟为1秒的Handler,例如ReactContext应该可用:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
ReactContext reactContext = getReactNativeHost().getReactInstanceManager().getCurrentReactContext();
}
}, 1000);
}
Run Code Online (Sandbox Code Playgroud)
但是我建议您从ReactContextBaseJavaModule进行操作,在创建时提供上下文...
| 归档时间: |
|
| 查看次数: |
3588 次 |
| 最近记录: |