如何在MainActivity中使用ReactApplicationContext,让android 可以在原生任何一处向RN上层发送通知
    例如我们app启动的Activity为MainActivity,而MainActivity这里需要继承ReactActivity,然后我们来点进去看下ReactActivity具有的方法,除了通用的activity的生命周期方法,
这里有一个方法:
    protected final ReactNativeHost getReactNativeHost() {
        return mDelegate.getReactNativeHost();
    }

1.什么是ReactNativeHost呢?
它是RN项目在初始化Application的时候被用到,像是一个容器,用来管理ReactInstanceManager等,举例几个ReactNativeHost中常用到的方法:
getReactInstanceManager、getJSBundleFile、getPackages(后续有时间可单独介绍这些方法的作用)。
2.ReactInstanceManager是做什么的?
个人的理解是用来维系react native js上层与原生之间的一个桥梁,RN上层view的生命周期依赖于ReactInstanceManager(如有理解错误,欢迎指正)。

话不多说,我们可以在MainActivity的onCreate方法中直接上代码:
        ReactInstanceManager mReactInstanceManager = getReactNativeHost().getReactInstanceManager();
        if (null == mReactInstanceManager.getCurrentReactContext()) {   // APP启动过程中,初始化ReactInstanceManager等需要时间,先获取一次上下文,如未获取到
            mReactInstanceManager.addReactInstanceEventListener(new ReactInstanceManager.ReactInstanceEventListener() {  //监听初始化是否完成
                public void onReactContextInitialized(ReactContext validContext) {
                    ReactApplicationContext context = (ReactApplicationContext) validContext;
                    // do something
                }
            });
        }else{
           ReactApplicationContext context  =  mReactInstanceManager.getCurrentReactContext();
           // do something
        } 

注意在Activity销毁时,记得调用removeReactInstanceEventListener方法remove监听,防止内存泄露。(这里只是提供方法,如实际项目中使用,仍有优化之处)


在ReactInstanceManager中,我们需要用到这个方法,可以看到在获取上下文时,
  @VisibleForTesting
  public @Nullable ReactContext getCurrentReactContext() {
    synchronized (mReactContextLock) {
      return mCurrentReactContext;
    }
  }
  

 以上即为在MainActivity中使用ReactApplicationContext的方法,如有不足之处,欢迎指正和探讨,谢谢~~

更多相关文章

  1. Android(安卓)进阶 教你打造 Android(安卓)中的 IOC 框架 【View
  2. android中ListView异步加载图片时的图片错位问题解决方案
  3. 浅谈Android游戏开发基础和经验
  4. Android(安卓)View绘制回调方法流程
  5. 极光推送使用实例(二) Android客户端
  6. windows中下载android源码的方法 附下载脚本
  7. Android日记之2012\01\13
  8. Android四大组件之服务
  9. Android的BroadcastReceiver简介

随机推荐

  1. Android调用系统相机获取返回数据
  2. android移植 十之一 lcd课题
  3. 全副武装!AndroidUI自动化测试在RxImagePi
  4. 安卓APP新手设计教程:19条Android设计经验
  5. 看一遍就明白android activity的生命周期
  6. Android界面布局的几种常用方式
  7. 【Android每周专题】横竖屏切换和Activit
  8. Android(安卓)conversion to dalvik form
  9. 疯狂Android讲义
  10. Android中用TextView显示大量文字的方法