coo*_*ler 15 crash android webview android-9.0-pie
您好专家Android开发人员:
我们有一个android应用,我们的基本工作流程如下
问题 在Webview上轻按“确定”按钮后,本机应用程序页面将正常启动,直到几周前,该应用程序崩溃,我们将被带回到Webview页面的开始,要求我们输入详细信息。
请注意以下警告:
这是一个可能有用的代码段-这就是我们加载Web视图的方式。
webview = findViewById(R.id.webview);
webview.setVisibility(View.VISIBLE);
final ProgressDialog pd = ProgressDialog.show(ActivtyName.this, "", "Please wait", true);
webview.setGeolocationEnabled(true);
webview.setMixedContentAllowed(true);
webview.getSettings().setJavaScriptEnabled(true);
webview.getSettings().setDomStorageEnabled(true);
webview.getSettings().setLoadWithOverviewMode(true);
webview.setWebChromeClient(new WebChromeClient()
Run Code Online (Sandbox Code Playgroud)
========这里我们覆盖了很多方法,后面是
webview.setWebViewClient(new WebViewClient()
Run Code Online (Sandbox Code Playgroud)
=======我们在这里覆盖方法。
知道会发生什么吗?我们尝试通过USB模式进行调试时查看日志,但是除了如下所示在Android控制台上显示的内容外,我们在日志中看不到太多内容:
*** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
pid: 0, tid: 0 >>> com.a****d.xyzapp <<<
Run Code Online (Sandbox Code Playgroud)
backtrace:
#00 pc 0000000001b61620 /data/app/com.android.chrome-DpcaMBOCm2oa08upmw1Tug==/base.apk
Run Code Online (Sandbox Code Playgroud)
这是请求的更详细的日志:
2019-05-18 11:58:01.694 23217-23217/com.a**d.xyzapp.debug A/chromium:
[FATAL:crashpad_client_linux.cc(404)] Render process (28925)'s crash wasn't handled by all associated webviews, triggering application crash.
Fatal signal 5 (SIGTRAP), code 1 (TRAP_BRKPT), fault addr 0x7ab7b9d620 in tid 23217 (atientapp.debug), pid 23217 (atientapp.debug) (edited)
Run Code Online (Sandbox Code Playgroud)
在您的情况下,渲染进程崩溃并且它没有被系统杀死。
因此,作为描述在这里,如果重写
onRenderProcessGone(WebView view,
RenderProcessGoneDetail detail)
Run Code Online (Sandbox Code Playgroud)
上述方法detail.didCrash()将适用true于您的情况。在这种情况下,Renderer 由于内部错误(例如内存访问冲突)而崩溃。检测到渲染器崩溃后,应用程序本身崩溃。
要处理崩溃并允许您的应用程序继续执行,您应该按照以下步骤操作:-
onRenderProcessGone并返回true。问题只要在我们的原生应用程序页面在几周前正常启动的 webview 上点击 OK 按钮,应用程序就会崩溃,我们将被带回 webview 页面的开头,要求我们输入详细信息。
这是因为如果渲染器在加载特定网页时崩溃,尝试再次加载同一页面可能会导致新WebView对象表现出相同的渲染崩溃行为。
检查此链接中的代码以获取更多信息。
希望这会有所帮助。
这似乎是一个内存问题,我可以从几个线程中找到它。
为此,在您的 webview 片段/活动中覆盖 onLowMemory()并添加日志。
@Override
public void onLowMemory() {
Log.d("TAG_MEMORY", "Memory is Low");
super.onLowMemory();
}
Run Code Online (Sandbox Code Playgroud)
现在尝试重现崩溃,如果 onLowMemory() 被调用,那么这就是根本原因。可能有些webview页面占用内存太多。
| 归档时间: |
|
| 查看次数: |
2898 次 |
| 最近记录: |