全部产品
云市场

Android Weex容器指南

更新时间:2019-01-14 16:08:28

EMAS-WEEX使用指南

EMAS-WEEX初始化请参考Android接入文档,这里主要介绍EMAS-WEEX API使用。

EMAS-WEEX是EMAS官方提供的WEEX基础库,提供对weex官方sdk的实用封装以及各种实用、通用组件,目的在于降低EMAS用户对于WEEX的接入、使用成本。

以上章节中已经在gradle依赖和初始化中对EMAS-WEEX做了相应的依赖和初始化操作,这里讲解一些开发过程中使用EMAS-WEEX的使用要点,推荐用户使用EMAS-WEEX而不是weex官方sdk。

使用WeexPageFragment

除了weex官方sdk的Activity用法外,EMAS-WEEX提供了fragment的方式供渲染weex界面,建议直接继承自WeexPageFragment使用。

可以使用WeexPageFragment的newInstanceWithUrl/newInstanceWithTemplate方法渲染一个weex fragment,支持远程和本地文件渲染,渲染后将绘制到最后一参数所指定的view中

  1. WeexPageFragment fragment;
  2. if (jsSource.startsWith("http")) {
  3. fragment = (WeexPageFragment) WeexPageFragment
  4. .newInstanceWithUrl(this, WeexFragment.class, jsSource, getRenderUrl(jsSource), R.id.frame_root_layout);
  5. } else {
  6. fragment = (WeexPageFragment) WeexPageFragment.newInstanceWithTemplate(this, WeexFragment.class,
  7. WXFileUtils.loadAsset(jsSource, mContext),jsSource,
  8. null, null, R.id.frame_root_layout);
  9. }
  10. fragment.setDynamicUrlEnable(true);

降级

WeexPageFragment提供了默认的降级处理机制,当weex脚本因为各种问题出错且。以被降级时,将通过webview来渲染界面提供兜底策略,避免crash发生。只需要调用setEnableDowngrade方法打开开关即可。

  1. public class WeexFragment extends WeexPageFragment {
  2. @Override
  3. public void onCreate(@Nullable Bundle savedInstanceState) {
  4. super.onCreate(savedInstanceState);
  5. setEnableDowngrade(true);//打开weex跨平台降级处理
  6. }
  7. }

注意,只有渲染线上url方式的weex界面,降级服务才是可用的,同时需要url服从以下格式:

  1. http://cdn.emas-poc.com/material/yanpeicpf/index.html?_wx_tpl=http://cdn.emas-poc.com/app/yanpeicpf-bbb/pages/index/entry.js

_wx_tpl标记后是需要渲染的weex脚本地址(后缀名js/wx等都可以),_wx_tpl标记前是发生错误时需要降级到的H5地址。

使用WEEX DEVTOOL

EMAS-WEEX集成了官方WEEX DEVTOOL SDK,可以通过WeexInspectorManager.startInspector开启。

使用示例:

  1. private void handleScanCodeResult(String result) {
  2. Uri uri = Uri.parse(result);
  3. if (uri == null) {
  4. Log.e(TAG, "scan result null, return");
  5. } else {
  6. if (WeexInspectorManager.startInspector(uri, mContext)) {
  7. Toast.makeText(this, "连接调试模式", Toast.LENGTH_SHORT).show();
  8. } else {
  9. // 展示weex界面
  10. }
  11. }
  12. }

您可以将扫码后的结果传入到handleScanCodeResult方法中做处理。

WEEX DEVTOOL使用方式可以参考 官方文档