Android AsyncTask将讲解

时间:2023-03-09 19:51:18
Android AsyncTask将讲解

原型:AsyncTask<Params, Progress, Result>

  • Params 表示传入参数类型
  • Progress表示处理参数类型
  • Result表示返回类型
 new AsyncTask<String, Void, String>() {

             @Override
protected void onCancelled() {
// TODO Auto-generated method stub
super.onCancelled();
} @Override
protected void onCancelled(String result) {
// TODO Auto-generated method stub
super.onCancelled(result);
} @Override
protected void onPostExecute(String result) {
super.onPostExecute(result);
text.setText(result);
} @Override
protected void onPreExecute() {
Toast.makeText(MainActivity.this, "开始读取", Toast.LENGTH_SHORT).show();
super.onPreExecute();
} @Override
protected void onProgressUpdate(Void... values) {
// TODO Auto-generated method stub
super.onProgressUpdate(values);
} @Override
protected String doInBackground(String... params) {
URL url;
try {
url = new URL(params[0]);
URLConnection conn = url.openConnection();
InputStream is = conn.getInputStream();
InputStreamReader isr = new InputStreamReader(is);
BufferedReader br = new BufferedReader(isr);
String line;
StringBuilder builder = new StringBuilder();
while ((line = br.readLine()) != null) {
builder.append(line);
}
br.close();
is.close();
return builder.toString();
} catch (IOException e) {
e.printStackTrace();
}
return null;
} }.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) 处理时回调