写了个小demo进行学习。


public class MainActivity extends AppCompatActivity {    private TextView tv;    private  int sum;    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        tv = (TextView) findViewById(R.id.tv);                Integer[] num = {1,2,3,4,1,1,1,1,1,1};//传入AsyncTask的数组        /**         * AsyncTask中的三个参数         * 1.传入的参数,在execute方法中传入,最终传到doInBackground来使用。         * 2.监听异步的变化的值,是异步线程中publishProgress传给onProgressUpdate的值。         * 3.doInBackground返回的值,传给了onPostExecute。         */        new AsyncTask<Integer,String,String>(){            /**             * 在主线程中执行             * 在doInBackground方法执行之前执行该方法,做一些预处理的工作             */            @Override            protected void onPreExecute() {                super.onPreExecute();                showLog("onPreExecute");            }            /**             * 在线程池中执行             * 异步操作写在此处             * @param params 通过execute方法传入的值             * @return 返回值给onPostExecute来进行主线程的UI操作             */            @Override            protected String doInBackground(Integer... params) {                showLog("doInBackground");                for (int i = 0;i < 10; i++){                    try {                        Thread.sleep(3000);                        publishProgress("value = " + i);//调用onProgressUpdate的前提条件方法。                        showLog("run " + i + params[i]);                        sum += params[i].intValue();                    } catch (InterruptedException e) {                        e.printStackTrace();                    }                }                return "result = " + sum;            }            /**             * 在主线程中执行             * 在doInBackground方法执行之后执行该方法             * 用于在主线程中进行UI操作             * @param result doInBackground返回的结果             */            @Override            protected void onPostExecute(String result) {                super.onPostExecute(result);                showLog("onPostExecute");            }            /**             * 在主线程中执行             * 在调用publishProgress方法后以下方法会执行             * @param values publishProgress中传入的值             */            @Override            protected void onProgressUpdate(String... values) {                super.onProgressUpdate(values);                showLog("onProgressUpdate");                tv.setText(values[0]);            }        }.execute(num);//execute中传入的是数组,就是说异步任务可以用于多个值    }    private void showLog(String msg){        Log.e("uding",msg);    }}


更多相关文章

  1. Android(安卓)Google地图那些事
  2. Android创建快捷方式图标
  3. Android(安卓)View.startAnimation()动画
  4. Android(安卓)中使用 ComponentName 类
  5. [Android设计模式]Android退出应用程序终极方法
  6. android service 英文文档解析
  7. Android中的SQLite使用
  8. 浅谈Java中Collections.sort对List排序的两种方法
  9. Python list sort方法的具体使用

随机推荐

  1. 当AJAX响应来自PHP文件时,如何显示以消息
  2. 关于jQuery Themeroller主题,我在哪里可以
  3. 设置活动类并将其从所有其他类中删除
  4. 关于jQuery获取html标签自定义属性值或da
  5. jQuery 异步上传插件 Uploadify302 使用
  6. jQuery无法识别前缀为“/”的类名
  7. jQuery之mouseover与mouseenter以及mouse
  8. 如何使用智能管理员的注销警告弹出窗口来
  9. jquery mobile开发中常见的问题
  10. bootstrap,模态对话框,shown.bs.modal事件