怎么用asynctask写这段代码
时间: 2023-08-17 10:23:37 浏览: 49
可以将OkHttp的请求封装在AsyncTask的doInBackground方法中,然后在请求成功或失败时在AsyncTask的onPostExecute方法中执行UI操作,如显示Toast。
以下是使用AsyncTask实现的示例代码:
```
private class MyAsyncTask extends AsyncTask<Void, Void, Boolean> {
private String name; //窗口名, 也即是线程的名字
public MyAsyncTask(String name) {
this.name = name;
}
@Override
protected Boolean doInBackground(Void... voids) {
String a = "switch";
String cmd = "switch" + 0;//下发命令的内容
String body = String.format(cmd);
String url1 = String.format("http://api.heclouds.com/devices/" + DeviceID + "/datapoints?datastream_id=" + a);
OkHttpClient client = new OkHttpClient();
RequestBody requestBody = RequestBody.create(MediaType.parse("application/json;charset=utf-8"), body);
Request request = new Request.Builder().url(url1).header("api-key", ApiKey)
.post(requestBody)
.build();
Call call = client.newCall(request);
try {
Response response = call.execute();
return response.isSuccessful();
} catch (IOException e) {
e.printStackTrace();
return false;
}
}
@Override
protected void onPostExecute(Boolean success) {
String insertStr = success ? "POST请求成功" : "POST请求失败";
Toast.makeText(MainActivity2.this, insertStr, Toast.LENGTH_SHORT).show();
}
}
// 调用方式
new MyAsyncTask("name").execute();
```
请注意,这里使用了同步的方式发起网络请求,因此AsyncTask的doInBackground方法需要在子线程中执行,不能在主线程中执行。如果需要使用异步方式,可以将OkHttp的请求封装在OkHttp的enqueue方法中,然后在回调函数中执行UI操作。
相关推荐
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)