weex社区

Weex 坑点记录

2018-10-23  本文已影响37人  伽蓝烟雨

1. Websocket的Okhttp 配套太老。

  Weex示例里面的低版本的okhttp onMessage方法回调监听会丢失数据。在换用Ok3成功解决这个问题。具体代码块:

OkHttpClient.Builder httpBuilder = new okhttp3.OkHttpClient.Builder();
        OkHttpClient okHttpClient = httpBuilder.connectTimeout(10, TimeUnit.SECONDS)
                                   .readTimeout(10, TimeUnit.SECONDS).build();
        okhttp3.Request request = new Request.Builder().url(url).build();
        okHttpClient.newWebSocket();

2.Weex 获取当前页面的实例

  在weex示例代码的WeexPageActivity里面会静态引用当前acitivty对象,这样的操作很不对,如果你代码依照示例代码来,会造成内存泄露。比较正确的方式是,采用Activity栈的模式存储起来。最不济也要在界面销毁的时候置空。
  另外一个点是weex 的activity在回退的时候不会重新赋值,假设A跳到B,A的acitcity变成了B的activity,回退后,WxpageActivity持有的还是ActivityB对象。这时候会你调用改对象很大可能造成应用崩溃。
  所以,你可以选择在调用onResume方法时使用以下代码块

    @Override
    protected void onResume() {
        super.onResume();
        if (mInstance != null) {
            Log.e("update", "wxPageActivityInstance 重新赋值");
            wxPageActivityInstance = this;
            mInstance.onActivityResume();
        }
    }

3.阿里云推送跳转问题(跳到指定的本地Weex页面)

首先在指定的方法里面执行startActivity跳转到WxpageActivity.
然后在WxpageActivity里面通过getIntent方法判断页面跳转的来源。执行以下代码块

  mConfigMap.put("bundleUrl", "xxx"+msgId);
                    mInstance.render(TAG, WXFileUtils.loadAsset("pages/msgDetail.js", WXPageActivity.this),
                            mConfigMap,msgId+"" ,
                            ScreenUtil.getDisplayWidth(WXPageActivity.this), ScreenUtil
                                    .getDisplayHeight(WXPageActivity.this),
                            WXRenderStrategy.APPEND_ASYNC);

未完待续,估计还有坑。

上一篇下一篇

猜你喜欢

热点阅读