Can’t set data directory suffix: WebView already initialized
问题原因
顾名思义webview已初始化
可是为什么会出现这个呢,发现这个是android9.0才会报错。报错提示告诉我我的Application文件中onCreate()方法中调用的广告sdk初始化报错。发现sdk初始化时获取userAgent的时候调用了WebSettings.getDefaultUserAgent(context) 会初始化webview。
可Application在打开app的时候就运行了,我进入app首页了才报错很奇怪。最终发现我竟然开了两个进程,那就意味着Application跑了两次,WebSettings.getDefaultUserAgent(context) 就执行了两次,然后就出现了webview已初始化。
问题分析
为什么会出现出现两个进程呢?
然后我就打开了我自己多个项目开始尝试,最终发现我接了推送的项目都会开启一个新的进程 ,没接推送的就一个进程。
问题解决
在调用WebSettings.getDefaultUserAgent(context) 之前做一个判断就好了
String processName = getProcessName(appContext); String packageName = appContext.getPackageName(); if (!packageName.equals(processName)) { WebView.setDataDirectorySuffix(processName); } eles { //内容初始化 } private String getProcessName(Context context) { if (context == null) return null; ActivityManager manager = (ActivityManager) context.getSystemService(Context.ACTIVITY_SERVICE); for (ActivityManager.RunningAppProcessInfo processInfo : manager.getRunningAppProcesses()) { if (processInfo.pid == android.os.Process.myPid()) { return processInfo.processName; } } return null; }
第一次记录自己遇到的错误和解决方法,记下来后感觉自己对这个对记录更深了!good!!
参考了https://www.cocoachina.com/articles/74902
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/addevelopment/892470.html