上班第十三周

任务

  1. 完成直播广告位,疾病标签引导需求
  2. 修复Android 7.x上当UI阻塞的时候,Toast显示崩溃问题

项目中使用Java反射对WebView桥的封装

  1. 重写WebViewClient的onLoadResource方法
 @Override
    public void onLoadResource(WebView view, final String url) {
        //根据url获取对应要调用的方法名和参数
          final LightAppNativeRequest req = new LightAppNativeRequest(activity, reqString);
        //利用Java反射调用对应的方法,并传递相应的参数
        try {
            Method jsBridgeMethod = jsBridge.getClass().getMethod(method, LightAppNativeRequest.class, LightAppNativeResponse.class);
            jsBridgeMethod.invoke(jsBridge, req, resp);
        } catch (Exception e) {
        
        }
    }
  1. 使用泛型来初始化对就的jsBride对象
    公司相关使用组件化开发,有很多主工程,每一个主工程都对应一个Bride对象,这样就可以通过这个对象进行统一管理
public abstract class LightAppActivity extends LightAppActivity {
}

这里的MedicalBridge就是统一管理桥的对象

解决Toast显示崩溃问题

发现bugly有个下面的报错信息

android.view.WindowManager$BadTokenException
    Unable to add window -- token android.os.BinderProxy@7f652b2 is not valid; is your activity running?
    android.view.ViewRootImpl.setView(ViewRootImpl.java:826)
    android.view.WindowManagerGlobal.addView(WindowManagerGlobal.java:369)
    android.view.WindowManagerImpl.addView(WindowManagerImpl.java:94)
    android.widget.Toast$TN.handleShow(Toast.java:459)

原因是如果 Toast在显示的时候UI阻塞了,就是会这个异常,这个问题只会在Android 8.0以下出现
解决:
替换了项目里面所有的Toast,使用使用blankj大神的工具库

参考

Toast问题深度剖析(一)

你可能感兴趣的:(上班第十三周)