AsyncTask的简单使用

AsynckTask使用的入门介绍

AsynckTask有几个核心的方法,并且有三个泛型

方法:
    excute
    onprexcute
    doInbackground
    onprograssUpdate
    onpostExcute
泛型:
    params
    progress
    Result

方法:

  • excute是出发异步任务的方法(在主线程),当excute执行后马上就会执行onprexcute方法(在主线程),
    用于准备Ui,比如:声明一个进度条,以及进度条的颜色,等等
  • onprexcute执行结束后就会执行doInbackground(params url)方法来执行耗时的操作(在子线程),比如:下载一个文件,方法中会调用publishProgress(Progress value)来实时更新操作的进度.
  • onprograssUpdate(Prosgress value)方法是在调用了publish时,此方法就被执行.onprograssUpdate(Prosgress value)将操作的进度展示在控件上,比如:将下载进度展示在进度条上.(在主线程)
  • onPostExcute(Result result)当后台耗时操作完成是调用此方法,直接将后台运算的结果作为参数传递到此方法中.

参数:

  • params可以是一个String字符串URL,执行耗时操作(下载文件)时的地址.
  • Progress可以是个数值,比如进度条的数值,计算下载文件的进度
  • Result可以是个文件或是json,结果出来可以进行文件处理,比如安装或解析等

注意事项

  • AsynckTask必须在主线程实例化
  • excute必须在主线程调用
  • 不能手动调用以上提到的几个方法
  • AsynckTask只能被执行一次,否则多次调用会出异常
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
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。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值