• AsyncTask的基础讲解


    @Override
    protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    //异步任务AsyncTask,只能执行一次,在一个线程里面不能多次执行
    //耗时操作(网络,数据库操作)一般用子线程,UI界面能够改变,Handler操作,Message

    new ExamAsyncTask().execute(1,2,3);//括号里面的参数给doInBackground()
    //new ExamAsyncTask().cancel(true);//调用onCancelled这个方法
    }

    //实现一个自己的异步任务类(要写封装类):
    //<>里面的三个类,都是对应的参数类型
    //参数一:要给doInBackground的变量类型,
    //参数二,执行过程中onProgressUpdate要用的参数类型,此参数是publishProgress(这里面调用),
    //参数三,结果给onPostExecute要用的参数的类型
    class ExamAsyncTask extends AsyncTask<Integer, String, Double>{//Params,Progress,Result
    //准备执行前调用
    @Override
    protected void onPreExecute() {
    super.onPreExecute();
    Log.i("2", "准备执行任务");
    }

    //耗时操作
    @Override
    protected Double doInBackground(Integer... params) {
    Log.i("我的参数1", params[0]+"");
    Log.i("我的参数2", params[1]+"");
    Log.i("我的参数3", params[2]+"");

    publishProgress("a","b","c");//调用onProgressUpdate更新界面
    Log.i("3", "耗时操作");
    return 100.0;
    }

    //更新界面UI
    @Override
    protected void onProgressUpdate(String... values) {//values[0]就是"abc"
    super.onProgressUpdate(values);
    Log.i("values[0]", values[0]);
    Log.i("values[1]", values[1]);
    Log.i("values[2]", values[2]);
    Log.i("4", "更新界面");
    }

    //任务执行完成后调用
    @Override
    protected void onPostExecute(Double result) {
    super.onPostExecute(result);
    Log.i("5", "任务完成");
    Log.i("resut", ""+result);//打印出100
    }

    //任务取消时调用
    @Override
    protected void onCancelled() {
    super.onCancelled();
    Log.i("6", "取消任务");

    }
    }
    }

    使用AsyncTask类,以下是几条必须遵守的准则:
    Task的实例必须在UI thread中创建;
    execute方法必须在UI thread中调用;
    不要手动的调用onPreExecute(), onPostExecute(Result),doInBackground(Params...), onProgressUpdate(Progress...)这几个方法;
    该task只能被执行一次,否则多次调用时将会出现异常;

  • 相关阅读:
    javascript 对象只读
    异步IO
    模板
    Web框架
    WSGI接口
    web开发发展历程
    python函数中的参数类型
    学习网址
    python inspect模块
    详解python的装饰器decorator
  • 原文地址:https://www.cnblogs.com/wangfeng520/p/5072106.html
Copyright © 2020-2023  润新知