Android AsyncTask将讲解

本文详细介绍了Android中AsyncTask类的使用方法,包括其原型定义、各方法的作用及应用场景,并通过示例展示了如何进行网络数据读取。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

原型:AsyncTask<Params, Progress, Result>

  • Params 表示传入参数类型
  • Progress表示处理参数类型
  • Result表示返回类型
 1 new AsyncTask<String, Void, String>() {
 2 
 3             @Override
 4             protected void onCancelled() {
 5                 // TODO Auto-generated method stub
 6                 super.onCancelled();
 7             }
 8 
 9             @Override
10             protected void onCancelled(String result) {
11                 // TODO Auto-generated method stub
12                 super.onCancelled(result);
13             }
14 
15             @Override
16             protected void onPostExecute(String result) {
17                 super.onPostExecute(result);
18                 text.setText(result);
19             }
20 
21             @Override
22             protected void onPreExecute() {
23                 Toast.makeText(MainActivity.this, "开始读取", Toast.LENGTH_SHORT).show();
24                 super.onPreExecute();
25             }
26 
27             @Override
28             protected void onProgressUpdate(Void... values) {
29                 // TODO Auto-generated method stub
30                 super.onProgressUpdate(values);
31             }
32 
33             @Override
34             protected String doInBackground(String... params) {
35                 URL url;
36                 try {
37                     url = new URL(params[0]);
38                     URLConnection conn = url.openConnection();
39                     InputStream is = conn.getInputStream();
40                     InputStreamReader isr = new InputStreamReader(is);
41                     BufferedReader br = new BufferedReader(isr);
42                     String line;
43                     StringBuilder builder = new StringBuilder();
44                     while ((line = br.readLine()) != null) {
45                         builder.append(line);
46                     }
47                     br.close();
48                     is.close();
49                     return builder.toString();
50                 } catch (IOException e) {
51                     e.printStackTrace();
52                 }
53                 return null;
54             }
55             
56         }.execute(url);
  1. doInBackground(String... params) 参数跟AsyncTask 的第一个参数对应,后台处理放在该方法中;
  2. onPostExecute(String result) 参数跟AsyncTask 的最后一个参数对应,后台线程执行完后回调,其中result 是 doInBackground的返回结果;
  3. onPreExecute() 线程执行之前调用;
  4. onCancelled() 取消时调用;
  5. onCancelled(String result) 取消时调用;
  6. onProgressUpdate(Void... values) 处理时回调

转载于:https://www.cnblogs.com/baisu/p/4047005.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值