java - 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();
}
仅供参考,此问题在设置方向侦听器之前发生。
解决方案
看起来 WebView 的渲染过程以某种方式失败了。您可以将创建的 WebViewClient 存储在变量上,并检查其方法 onRenderProcessGone() 的结果,以检查它是否在您第二次加载活动时呈现。这里有所有的 WebViewClient 方法:https ://developer.android.com/reference/android/webkit/WebViewClient
推荐阅读
- amazon-web-services - 如何使用 Amazon SQS Springn 云注释 @SqsListener 轮询特定数量的消息
- android - 如何处理 DownloadManager 的不同结果
- flutter - 有没有办法在 Flutter 中访问 MotionEvent#getPressure?
- qt - Cmake 给出一个错误,说 Qt 5.14.2 不可用
- reactjs - 使用 Elasticsearch 过滤所有
- background - agora虚拟背景sdk可以和WebRTC协议一起使用吗
- spring - Spring Batch - 如何以更快的方式读取 500 万条记录?
- jquery - JQ函数hover()
- python - 将附加数据合并到我的 TFIDF 数组中
- javascript - 我希望 javascript 在页面中心弹出