問題描述
Android 9.0及以上版本,多進(jìn)程使用WebView會引發(fā)應(yīng)用程序崩潰。
官方說明:在Android 9.0中,為改善應(yīng)用穩(wěn)定性和數(shù)據(jù)完整性严蓖,應(yīng)用無法再讓多個進(jìn)程共享一個WebView數(shù)據(jù)目錄。如果您的應(yīng)用必須在多個進(jìn)程中使用WebView實(shí)例氧急,則您必須先使WebView.setDataDirectorySuffix()方法為每個進(jìn)程指定唯一的數(shù)據(jù)目錄后綴颗胡,然后再在相應(yīng)進(jìn)程中使用WebView的給定實(shí)例。該方法會將每個進(jìn)程的網(wǎng)絡(luò)數(shù)據(jù)放入應(yīng)用數(shù)據(jù)目錄內(nèi)其自己的目錄中吩坝。
解決問題
添加如下代碼
public static void initWebViewDataDirectory(Context context) {
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) {
String processName = getProcessName(context);
if (!context.getPackageName().equals(processName)) {//判斷是否是默認(rèn)進(jìn)程名稱
WebView.setDataDirectorySuffix(processName);
}
}
}
溫馨提示:
1毒姨、代碼一定是在進(jìn)程初始化的時(shí)候調(diào)用,比如Application中進(jìn)行調(diào)用钉寝。
2弧呐、代碼需要在其他的三方SDK初始化之前就要調(diào)用闸迷。