android webview onpagestarted 之前会做什么
时间: 2023-12-06 10:43:37 浏览: 285
在 Android WebView 加载一个新的页面之前,以下步骤可能会被执行:
1. WebView会检查缓存中是否有该页面,如果有,将直接从缓存中获取该页面并显示。
2. 如果缓存中不存在该页面,则WebView会向服务器发送网络请求,请求该页面的数据。
3. WebView会解析服务器返回的数据,提取出页面的HTML、JavaScript、CSS等资源。
4. 如果页面中包含外部资源(如图片、JS、CSS等),WebView会对这些资源进行预加载。
5. WebView会根据HTML中的标签和属性,构建页面的DOM树,并开始渲染页面。
6. 如果页面包含JavaScript代码,WebView会执行该代码,修改页面内容。
7. 当页面加载完成后,WebView会触发 onPageFinished() 回调函数,通知应用程序页面已加载完毕。
在这个过程中,如果 onPageStarted() 回调函数被触发,说明 WebView 已经开始加载新的页面,但是尚未完成。此时应用程序可以做一些操作,如显示加载进度条等。
相关问题
android webview 常用用法
Android WebView 是一个用于在应用程序中显示 Web 内容的组件。以下是 Android WebView 常用用法:
1. 加 URL:使用 WebView 加载 URL 可以通过调用 loadUrl() 方法来实现,例如:
```
webView.loadUrl("https://www.example.com");
```
2. 加载本地文件:使用 WebView 加载本地文件可以调用 loadUrl() 方法并传递文件的本地路径,例如:
```
webView.loadUrl("file:///android_asset/index.html");
```
3. 监听页面加载状态:可以使用 WebViewClient 类的 onPageStarted 和 onPageFinished 方法来监听页面加载状态,例如:
```
webView.setWebViewClient(new WebViewClient() {
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
// 页面开始加载时执行的操作
}
@Override
public void onPageFinished(WebView view, String url) {
// 页面加载完成时执行的操作
}
});
```
4. 向 WebView 中注入 JavaScript:可以使用 WebView 的 loadUrl() 方法向 WebView 中注入 JavaScript,例如:
```
webView.loadUrl("javascript:alert('Hello, world!')");
```
5. 调用 WebView 中的 JavaScript 方法:可以使用 WebView 的 evaluateJavascript() 方法调用 WebView 中的 JavaScript 方法,例如:
```
webView.evaluateJavascript("javascript:myFunction()", new ValueCallback<String>() {
@Override
public void onReceiveValue(String value) {
// 处理 JavaScript 方法返回的结果
}
});
```
6. 启用 JavaScript:可以通过调用 WebView 的 setJavaScriptEnabled() 方法来启用 JavaScript,例如:
```
webView.getSettings().setJavaScriptEnabled(true);
```
7. 启用缩放功能:可以通过调用 WebView 的 setBuiltInZoomControls() 方法启用缩放功能,例如:
```
webView.getSettings().setBuiltInZoomControls(true);
```
8. 自定义 WebViewClient:可以通过继承 WebViewClient 类并重写其中的方法来自定义 WebViewClient,例如:
```
private class MyWebViewClient extends WebViewClient {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
// 在 WebView 中打开链接
view.loadUrl(url);
return true;
}
}
webView.setWebViewClient(new MyWebViewClient());
```
android webview用法大全
以下是Android WebView的用法大全:
1. 在XML布局文件中添加WebView组件
```
<WebView
android:id="@+id/webview"
android:layout_width="match_parent"
android:layout_height="match_parent"/>
```
2. 在Java代码中获取WebView组件并设置WebViewClient
```
WebView webView = findViewById(R.id.webview);
webView.setWebViewClient(new WebViewClient());
```
3. 加载网页
```
webView.loadUrl("https://www.example.com");
```
4. 后退和前进
```
if(webView.canGoBack()) {
webView.goBack();
}
if(webView.canGoForward()) {
webView.goForward();
}
```
5. 加载本地HTML页面
```
webView.loadUrl("file:///android_asset/index.html");
```
6. 设置JavaScript支持
```
webView.getSettings().setJavaScriptEnabled(true);
```
7. 设置缩放
```
webView.getSettings().setBuiltInZoomControls(true);
webView.getSettings().setDisplayZoomControls(false);
```
8. 处理网页中的URL
```
webView.setWebViewClient(new WebViewClient() {
@Override
public boolean shouldOverrideUrlLoading(WebView view, String url) {
if(url.startsWith("mailto:")) {
Intent intent = new Intent(Intent.ACTION_SENDTO, Uri.parse(url));
startActivity(intent);
return true;
}
view.loadUrl(url);
return true;
}
});
```
9. 拦截网页中的请求
```
webView.setWebViewClient(new WebViewClient() {
@Override
public WebResourceResponse shouldInterceptRequest(WebView view, WebResourceRequest request) {
if(request.getUrl().toString().endsWith(".png")) {
try {
InputStream inputStream = getAssets().open("image.png");
return new WebResourceResponse("image/png", "UTF-8", inputStream);
} catch (IOException e) {
e.printStackTrace();
}
}
return super.shouldInterceptRequest(view, request);
}
});
```
10. 处理页面加载事件
```
webView.setWebViewClient(new WebViewClient() {
@Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
progressBar.setVisibility(View.VISIBLE);
}
@Override
public void onPageFinished(WebView view, String url) {
progressBar.setVisibility(View.GONE);
}
@Override
public void onReceivedError(WebView view, WebResourceRequest request, WebResourceError error) {
Toast.makeText(MainActivity.this, "Error: " + error.getDescription(), Toast.LENGTH_SHORT).show();
}
});
```
11. 调用JavaScript代码
```
webView.loadUrl("javascript:alert('Hello, world!')");
```
12. 与JavaScript交互
```
webView.addJavascriptInterface(new Object() {
@JavascriptInterface
public void showToast(String message) {
Toast.makeText(MainActivity.this, message, Toast.LENGTH_SHORT).show();
}
}, "android");
```
以上是Android WebView的用法大全,希望能对你有所帮助。
阅读全文