fangxiaopeng / HybridAppDev

Android混合开发实践(Cordova/AgentWeb/Weex)
https://github.com/fangxiaopeng/HybridAppDev
6 stars 0 forks source link

Weex页面加载失败,onException error Code: -1001 #1

Open fangxiaopeng opened 6 years ago

fangxiaopeng commented 6 years ago

Weex页面加载失败!报错信息如下: onException error Code: -1001, msg: degradeToH5|createInstance fail|wx_create_instance_error isJSFrameworkInit==false reInitCount == 1

部分手机上仅首次加载才会失败。

fangxiaopeng commented 6 years ago

两种解决办法,亲测有效: (1)设置延时渲染; try{ // 渲染之前延时1秒(解决页面空白问题) Thread.sleep(1000); mWXSDKInstance.render(TAG, WXFileUtils.loadAsset(path, this.getContext()), options, null, -1, -1, WXRenderStrategy.APPEND_ASYNC); }catch (Exception e){ e.printStackTrace(); }

(2)切换回V0.16版本;

fangxiaopeng commented 6 years ago

问题原因:子线程中initFramework,js framework(main.js)初始化尚未成功,执行return导致创建WXSDKInstance实例失败。

解决办法(第三种): com.taobao.weex.bridge.WXBridgeManager类createInstance方法中如下代码片段

if (!isJSFrameworkInit() && reInitCount == 1 && !WXEnvironment.sDebugServerConnectable) { Log.e("fxp", "instance.onRenderError"); instance.onRenderError( WXRenderErrorCode.DegradPassivityCode.WX_DEGRAD_ERR_INSTANCE_CREATE_FAILED.getDegradErrorCode(), WXRenderErrorCode.DegradPassivityCode.WX_DEGRAD_ERR_INSTANCE_CREATE_FAILED.getDegradErrorMsg() + " isJSFrameworkInit==" + isJSFrameworkInit() + " reInitCount == 1" ); post(new Runnable() { @Override public void run() { initFramework(""); } }, instanceId); // return; // 注销return即可 }