项目中 直接将ReactRootView 当做一个模块添加到activity,当RN页面做跳转的时候,如果点击RN页面返回角标返回都是正常的(ios果断是无压力的,没有back键),Android机器 back直接将整个activity弹栈了。这显然是不行的,最后在react 中文网找到了方法。
1.将你的 activity implements DefaultHardwareBackBtnHandler
主要是重写
@Override
public void invokeDefaultOnBackPressed() {
super.onBackPressed();
}
2.然后把后退按钮事件传递给React Native(核心)
@Override
public void onBackPressed() {
if (mReactInstanceManager != null) {
mReactInstanceManager.onBackPressed();
} else {
super.onBackPressed();
}
}
3.将activity的生命周期回调传递给ReactInstanceManager
@Override
protected void onPause() {
super.onPause();
if (mReactInstanceManager != null) {
mReactInstanceManager.onHostPause(this);
}
}
@Override
protected void onResume() {
super.onResume();
if (mReactInstanceManager != null) {
mReactInstanceManager.onHostResume(this, this);
}
}
@Override
protected void onDestroy() {
super.onDestroy();
if (mReactInstanceManager != null) {
mReactInstanceManager.onHostDestroy();
}
}
最后大功告成,点击返回键时 和原生操作流程一致!!
网友评论