React Native 学习笔记十六(细节分析)
来源:互联网 发布:探测网络拓扑 编辑:程序博客网 时间:2024/05/18 06:19
mReactRootView = new ReactRootView(this);
mReactInstanceManager = ReactInstanceManager.builder()
.setApplication(getApplication())
.setBundleAssetName("index.android.bundle")
// 设置模块的主入口的JS文件为index.android.js
.setJSMainModuleName("index.android")
// 一般情况下 创建父类继承自MainReactPackage 获取已经创建的package集合 然后将新的package添加进去
// 在这里为了省事我就不再创建
.addPackage(new MainReactPackage())
.addPackage(new RegistPackage())
.setUseDeveloperSupport(BuildConfig.DEBUG)
.setInitialLifecycleState(LifecycleState.RESUMED)
.build();
// 再当前主视图中 添加对应视图中
mReactRootView.startReactApplication(mReactInstanceManager, "MyApp", null);
嵌入原生 这段代码是 不能省略的 但是之前我为了省事 没有做package集合 这次看了一下源码 发现 MainReactPackage 其实已经实现了Reactpackage接口
其中createViewmanager方法中 已经帮我们 创建了很多常用控件的Manager
@Override
public List<ViewManager> createViewManagers(ReactApplicationContext reactContext) {
return Arrays.<ViewManager>asList(
ARTRenderableViewManager.createARTGroupViewManager(),
ARTRenderableViewManager.createARTShapeViewManager(),
ARTRenderableViewManager.createARTTextViewManager(),
new ARTSurfaceViewManager(),
new ReactDialogPickerManager(),
new ReactDrawerLayoutManager(),
new ReactDropdownPickerManager(),
new ReactHorizontalScrollViewManager(),
new ReactImageManager(),
new ReactModalHostManager(reactContext),
new ReactProgressBarViewManager(),
new ReactRawTextManager(),
new ReactScrollViewManager(),
new ReactSliderManager(),
new ReactSwitchManager(),
new FrescoBasedReactTextInlineImageViewManager(),
new ReactTextInputManager(),
new ReactTextViewManager(),
new ReactToolbarManager(),
new ReactViewManager(),
new ReactViewPagerManager(),
new ReactVirtualTextViewManager(),
new ReactWebViewManager(),
new RecyclerViewBackedScrollViewManager(),
new SwipeRefreshLayoutManager());
}
为了注册方便 封装一下 reactPackage
abstract class BaseReactPackage implements ReactPackage { private ArrayList modules; @Override public List<NativeModule> createNativeModules(ReactApplicationContext reactContext) { modules = new ArrayList<>(); if (setViewManager(reactContext)!=null) modules.addAll(setViewManager(reactContext)); return modules; } @Override public List<Class<? extends JavaScriptModule>> createJSModules() { return Collections.emptyList(); } @Override public List<ViewManager> createViewManagers(ReactApplicationContext reactContext) { return Collections.emptyList(); } /** * 添加新的ViewManager * @param reactContext * @return */ protected abstract List<NativeModule> setViewManager(ReactApplicationContext reactContext) ;}
public class AddReactPackage extends BaseReactPackage { @Override protected List<NativeModule> setViewManager(ReactApplicationContext reactContext) { List<NativeModule> modules = new ArrayList<>(); modules.add(new ToastUtils(reactContext)); modules.add(new NetMoudle(reactContext)); return modules; }}
- React Native 学习笔记十六(细节分析)
- React-Native 学习笔记
- react native学习笔记
- react-native 学习笔记
- 学习笔记 - React Native
- React Native 学习笔记
- React Native 学习笔记
- react-native 学习笔记
- React Native学习笔记
- React Native学习笔记
- React Native学习笔记
- react-native 学习笔记
- React-Native学习笔记
- React Native 学习笔记(二)
- React-native 学习笔记(三)
- React Native学习笔记(3)--FlexBox
- React Native学习笔记(4)--Navigator
- React Native 学习笔记(一)
- 使用pushState实现微信“返回”按钮控制单页应用页面的无刷新跳转
- Flume hdfs 案例
- 无法定位软件包:cuda问题解决方法
- 举例说明ArrayAdapter的使用和如何设置ListView中每个Item的点击事件
- mac 端口 进程命令
- React Native 学习笔记十六(细节分析)
- Android 数据的存储
- Struts2学习笔记之Context Map
- HTML学习笔记之事件处理程序
- java 垃圾回收机制浅析
- 利用intellijidea创建maven多模块项目
- LoadAccelerators 失败的原因
- linux c++性能测试函数
- .htaccess 配置以及相关问题的解释