怎么使用AsyncTask
时间: 2024-01-11 15:03:45 浏览: 81
AsyncTask 是 Android 提供的一个实现了简单的异步任务处理机制的类。您可以通过继承 AsyncTask 类来实现在子线程中执行网络请求的功能。
下面是一个使用 AsyncTask 发送POST请求的示例代码:
```java
private class SendPostRequest extends AsyncTask<String, Void, String> {
@Override
protected String doInBackground(String... params) {
String urlString = params[0];
String dataString = params[1];
String apiKeyString = params[2];
OkHttpClient client = new OkHttpClient();
RequestBody requestBody = RequestBody.create(MediaType.parse("application/json;charset=utf-8"), dataString);
Request request = new Request.Builder().url(urlString).header("api-key", apiKeyString)
.post(requestBody)
.build();
try {
Response response = client.newCall(request).execute();
return response.body().string();
} catch (IOException e) {
e.printStackTrace();
return "POST请求失败";
}
}
@Override
protected void onPostExecute(String result) {
super.onPostExecute(result);
Toast.makeText(MainActivity.this, result, Toast.LENGTH_SHORT).show();
}
}
```
在 doInBackground() 方法中执行网络请求,将结果返回到 onPostExecute() 方法中。在 onPostExecute() 方法中可以更新UI界面,例如显示一个 Toast 消息,通知用户网络请求的结果。在使用时,您可以通过调用 execute() 方法来启动 AsyncTask。例如:
```java
new SendPostRequest().execute("http://api.heclouds.com/devices/" + DeviceID + "/datapoints?datastream_id=" + a, body, ApiKey);
```
其中,第一个参数是URL地址,第二个参数是POST请求的数据体,第三个参数是API Key。
阅读全文