wangguanquan commented on issue #1954: 
WXSDKInstance类有必要暴露IWXRenderListener和IWXStatisticsListener两个属性
URL: https://github.com/apache/incubator-weex/issues/1954#issuecomment-455091967
 
 
   >你是在什么场景下,遇到Render出错,且RenderListener.onException没有被调用
   
   可能是我没有描述清楚,并不是sdk底层没有触发`RenderListener#onException`,是我想在已有项目中添加Render出错时的逻辑。
   比如我们线上项目在Render错误时显示一个默认画面,我现在需要在Render错误时显示默认错误并上报错误信息到服务器供开发人员及时修复。
   
我不想改现有工程代码,想直接通过Application#registerActivityLifecycleCallbacks注册并在onActivityResumed方法中统一通过WXSDKInstance#getRenderListener获得原有的监听,然后再写一个包装类,并在onException方法里实现上报的功能。
   伪代码如下:
   ```
   @Override public void onActivityResumed(Activity activity) {
   if (activity instanceof IWXRenderListener) {
       // FIXME 在这里获得监听
       final IWXRenderListener listener = wxsdkInstance.getWXRenderListener();
        wxsdkInstance.registerRenderListener(new 
WXRenderListenerWrapper(listener));
   }
   
   //----Render wrapper
   public class WXRenderListenerWrapper implements IWXRenderListener {
       private IWXRenderListener listener;
       public WXRenderListenerWrapper (IWXRenderListener listener) {
           this.listener = listener;
       }
   ...
      
       @Override public void onException(WXSDKInstance instance, String 
errCode, String msg) {
           // 执行原有逻辑显示默认画面
           if (listener != null) {
               listener.onException(instance, errCode, msg);
           }
           // Track weex render error.
           JSONObject payload = new JSONObject();
           payload.put("className", instance.getContext().getClass().getName());
           payload.put("errCode", errCode);
           payload.put("message", msg);
   
           // 上报详细信息到服务器通知开发者
           Tracker.track("WEEX_RENDER_ERROR", payload);
       }
   }
   ```

----------------------------------------------------------------
This is an automated message from the Apache Git Service.
To respond to the message, please log on GitHub and use the
URL above to go to the specific comment.
 
For queries about this service, please contact Infrastructure at:
us...@infra.apache.org


With regards,
Apache Git Services

Reply via email to