首页 > 解决方案 > Webview 活动在第二次加载时未显示任何内容

问题描述

在显示(仅)由 web 视图组成的活动时,我遇到了这个奇怪的问题。

我第一次通过单击活动 A 中的某些内容来启动此活动 B 时,B 已正确加载且功能正常。我按下返回按钮,返回 A,然后单击同一个按钮转到 B,我的 webview 没有显示任何内容。调试了很多次,似乎没有什么异常。堆栈跟踪日志中也没有崩溃... wway 的这个问题总是在调试模式下发生,有时只在运行模式下发生。

这是活动的代码

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_spin);
    myItem = (Item) getIntent().getSerializableExtra("Item");
    initView();
    initHandlers();
}

private void initView()
{
    webView = findViewById(R.id.webview_spin);
    //TODO : webViewClient vs webChromeClient ?
    webView.setWebViewClient(new WebViewClient());
    webView.setWebChromeClient(new WebChromeClient());
    webView.getSettings().setJavaScriptEnabled(true);
    String json = new Gson().toJson(myItem);
    webView.loadUrl("file:///android_asset/item.html?item="+json);
}

private void initHandlers()
{
    OrientationEventListener orientationEventListener = new OrientationEventListener(this) {
        @Override
        public void onOrientationChanged(int orientation) {
            webView.reload();
        }
    };
    orientationEventListener.enable();
}

仅供参考,此问题在设置方向侦听器之前发生。

标签: javaandroidandroid-webview

解决方案


看起来 WebView 的渲染过程以某种方式失败了。您可以将创建的 WebViewClient 存储在变量上,并检查其方法 onRenderProcessGone() 的结果,以检查它是否在您第二次加载活动时呈现。这里有所有的 WebViewClient 方法:https ://developer.android.com/reference/android/webkit/WebViewClient


推荐阅读