任务
- 完成直播广告位,疾病标签引导需求
- 修复Android 7.x上当UI阻塞的时候,Toast显示崩溃问题
项目中使用Java反射对WebView桥的封装
- 重写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) {
}
}
- 使用泛型来初始化对就的jsBride对象
公司相关使用组件化开发,有很多主工程,每一个主工程都对应一个Bride对象,这样就可以通过这个对象进行统一管理
public abstract class LightAppActivity extends LightAppActivity<MedicalBridge> {
}
这里的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大神的工具库