当前位置:   article > 正文

AsyncTask demo

asynctask demo
  为了解决这个问题,Android 1.5提供了一个工具类:AsyncTask,它使创建需要与用户界面交互的长时间运行的任务变得更简单。相对来说AsyncTask更轻量级一些,适用于简单的异步处理,不需要借助线程和Handler即可实现。 
AsyncTask是抽象类.AsyncTask定义了三种泛型类型 Params,Progress和Result。 
  Params 启动任务执行的输入参数,比如HTTP请求的URL。 
  Progress 后台任务执行的百分比。 

  Result 后台执行任务最终返回的结果,比如String。 


  1. package com.example.aynctaskpro;
  2. import android.annotation.SuppressLint;
  3. import android.os.AsyncTask;
  4. import android.util.Log;
  5. public class MyTask extends AsyncTask<String, Integer, String> {
  6. @Override
  7. protected String doInBackground(String... params) {
  8. // TODO Auto-generated method stub
  9. Log.d("mytask", "doInBackground params = "+params[0]+" len="+params.length);
  10. try {
  11. Thread.sleep(1000);
  12. publishProgress(new Integer[]{1});
  13. Thread.sleep(1000);
  14. publishProgress(new Integer[]{2});
  15. Thread.sleep(1000);
  16. publishProgress(new Integer[]{3});
  17. Thread.sleep(1000);
  18. publishProgress(new Integer[]{4});
  19. Thread.sleep(1000);
  20. publishProgress(new Integer[]{5});
  21. } catch (InterruptedException e) {
  22. // TODO Auto-generated catch block
  23. e.printStackTrace();
  24. }
  25. return "fuck";
  26. }
  27. @Override
  28. protected void onCancelled() {
  29. // TODO Auto-generated method stub
  30. Log.d("mytask", "onCancelled");
  31. super.onCancelled();
  32. }
  33. @SuppressLint("NewApi")
  34. @Override
  35. protected void onCancelled(String result) {
  36. // TODO Auto-generated method stub
  37. Log.d("mytask", "onCancelled result="+result);
  38. super.onCancelled(result);
  39. }
  40. @Override
  41. protected void onPostExecute(String result) {
  42. // TODO Auto-generated method stub
  43. Log.d("mytask", "onPostExecute result="+result);
  44. super.onPostExecute(result);
  45. }
  46. @Override
  47. protected void onPreExecute() {
  48. // TODO Auto-generated method stub
  49. Log.d("mytask", "onPreExecute");
  50. super.onPreExecute();
  51. }
  52. @Override
  53. protected void onProgressUpdate(Integer... values) {
  54. // TODO Auto-generated method stub
  55. Log.d("mytask", "onProgressUpdate value="+values[0]+" len="+values.length);
  56. super.onProgressUpdate(values);
  57. }
  58. }



  1. package com.example.aynctaskpro;
  2. import android.app.Activity;
  3. import android.os.Bundle;
  4. import android.os.Handler;
  5. import android.util.Log;
  6. public class MainActivity extends Activity {
  7. @Override
  8. protected void onCreate(Bundle savedInstanceState) {
  9. super.onCreate(savedInstanceState);
  10. setContentView(R.layout.activity_main);
  11. final MyTask task = new MyTask();
  12. task.execute("address");
  13. // Handler h = new Handler();
  14. // h.postDelayed(new Runnable(){
  15. //
  16. // @Override
  17. // public void run() {
  18. // // TODO Auto-generated method stub
  19. // Log.d("mytask", "cancel="+task.cancel(false));
  20. // }
  21. //
  22. // }, 3000);
  23. }
  24. }


03-05 11:24:38.508: D/mytask(22628): onPreExecute
03-05 11:24:38.508: D/mytask(22628): doInBackground params = address len=1
03-05 11:24:39.508: D/mytask(22628): onProgressUpdate value=1 len=1
03-05 11:24:40.508: D/mytask(22628): onProgressUpdate value=2 len=1
03-05 11:24:41.518: D/mytask(22628): onProgressUpdate value=3 len=1
03-05 11:24:42.518: D/mytask(22628): onProgressUpdate value=4 len=1
03-05 11:24:43.518: D/mytask(22628): onProgressUpdate value=5 len=1
03-05 11:24:43.518: D/mytask(22628): onPostExecute result=fuck
声明:本文内容由网友自发贡献,转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号