给出步骤1中使用AsyncTask加载网页的完整代码,包括AsyncTask类的定义和activity类的定义
时间: 2024-06-08 10:07:28 浏览: 7
以下是使用AsyncTask加载网页的完整代码:
MainActivity.java
```java
public class MainActivity extends AppCompatActivity {
private WebView webView;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 初始化WebView
webView = (WebView) findViewById(R.id.webview);
webView.getSettings().setJavaScriptEnabled(true);
webView.setWebViewClient(new WebViewClient());
// 加载网页
new LoadWebPageTask().execute("https://www.baidu.com/");
}
private class LoadWebPageTask extends AsyncTask<String, Void, String> {
@Override
protected String doInBackground(String... urls) {
try {
URL url = new URL(urls[0]);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.connect();
InputStream inputStream = connection.getInputStream();
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
StringBuilder stringBuilder = new StringBuilder();
String line;
while ((line = bufferedReader.readLine()) != null) {
stringBuilder.append(line);
}
bufferedReader.close();
inputStream.close();
connection.disconnect();
return stringBuilder.toString();
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
@Override
protected void onPostExecute(String result) {
if (result != null) {
webView.loadData(result, "text/html", "UTF-8");
}
}
}
}
```
activity_main.xml
```xml
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:layout_width="match_parent"
android:layout_height="match_parent">
<WebView
android:id="@+id/webview"
android:layout_width="match_parent"
android:layout_height="match_parent" />
</RelativeLayout>
```
在这个例子中,我们创建了一个LoadWebPageTask类,继承自AsyncTask类,并实现了doInBackground()和onPostExecute()方法。doInBackground()方法用于在后台线程中加载网页,onPostExecute()方法用于在主线程中更新UI。在MainActivity的onCreate()方法中,我们创建了一个WebView实例并初始化,然后启动LoadWebPageTask任务来加载网页。当任务完成后,我们将获取到的网页内容使用loadData()方法在WebView中显示。