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);
未完待续,估计还有坑。