Webview活动在第二次加载时未显示任何内容

时间:2018-09-22 17:52:42

标签: java android android-webview

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

我第一次通过单击活动A中的某项来启动此活动B,则B已正确加载并正常运行。我按下返回按钮,返回到A,然后单击相同的按钮进入B,但我的Web视图未显示任何内容。调试了无数次,似乎没有什么异常。堆栈跟踪日志中也没有崩溃... 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();
}

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

1 个答案:

答案 0 :(得分:0)

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