任務(wù)
- 完成直播廣告位宦芦,疾病標(biāo)簽引導(dǎo)需求
- 修復(fù)Android 7.x上當(dāng)UI阻塞的時(shí)候拖吼,Toast顯示崩潰問題
項(xiàng)目中使用Java反射對WebView橋的封裝
- 重寫WebViewClient的onLoadResource方法
@Override
public void onLoadResource(WebView view, final String url) {
//根據(jù)url獲取對應(yīng)要調(diào)用的方法名和參數(shù)
final LightAppNativeRequest req = new LightAppNativeRequest(activity, reqString);
//利用Java反射調(diào)用對應(yīng)的方法劳澄,并傳遞相應(yīng)的參數(shù)
try {
Method jsBridgeMethod = jsBridge.getClass().getMethod(method, LightAppNativeRequest.class, LightAppNativeResponse.class);
jsBridgeMethod.invoke(jsBridge, req, resp);
} catch (Exception e) {
}
}
- 使用泛型來初始化對就的jsBride對象
公司相關(guān)使用組件化開發(fā)童本,有很多主工程摄职,每一個(gè)主工程都對應(yīng)一個(gè)Bride對象舔涎,這樣就可以通過這個(gè)對象進(jìn)行統(tǒng)一管理
public abstract class LightAppActivity extends LightAppActivity<MedicalBridge> {
}
這里的MedicalBridge就是統(tǒng)一管理橋的對象
解決Toast顯示崩潰問題
發(fā)現(xiàn)bugly有個(gè)下面的報(bào)錯(cuò)信息
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在顯示的時(shí)候UI阻塞了笼踩,就是會(huì)這個(gè)異常,這個(gè)問題只會(huì)在Android 8.0以下出現(xiàn)
解決:
替換了項(xiàng)目里面所有的Toast亡嫌,使用使用blankj大神的工具庫