@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只能被执行一次,否则多次调用时将会出现异常;

AsyncTask的基础讲解的更多相关文章

  1. Verilog语法基础讲解之参数化设计

    Verilog语法基础讲解之参数化设计   在Verilog语法中,可以实现参数化设计.所谓参数化设计,就是在一个功能模块中,对于一个常量,其值在不同的应用场合需要设置为不同的置,则将此值在设计时使用 ...

  2. 原生AJAX基础讲解及兼容处理

    原文:原生AJAX基础讲解及兼容处理 AJAX = Asynchronous JavaScript and XML (异步的JavaScript和XML). AJAX不是新技术 ,但却是热门的技术.它 ...

  3. JavaScript继承基础讲解,原型链、借用构造函数、混合模式、原型式继承、寄生式继承、寄生组合式继承

    说好的讲解JavaScript继承,可是迟迟到现在讲解.废话不多说,直接进入正题. 既然你想了解继承,证明你对JavaScript面向对象已经有一定的了解,如还有什么不理解的可以参考<面向对象J ...

  4. Android学习笔记-Adapter基础讲解

    本节引言 从本节开始我们要讲的UI控件都是跟Adapter(适配器)打交道的,了解并学会使用这个Adapter很重要, Adapter是用来帮助填充数据的中间桥梁,简单点说就是:将各种数据以合适的形式 ...

  5. 第二十四节:Java语言基础-讲解数组的综合应用

    数组的综合应用 // 打印数组 public static void printArray(int[] arr) { for(int x=0;x<arr.length;x++) { if(x!= ...

  6. 小D课堂 - 新版本微服务springcloud+Docker教程_2_02 微服务核心基础讲解

    笔记 2.微服务核心基础讲解     简介:讲解微服务核心知识 :网关.服务发现注册.配置中心.链路追踪.负载均衡器.熔断         1.网关:路由转发 + 过滤器                ...

  7. Android精通之AsyncTask与ListView讲解

    版权声明:未经博主允许不得转载 AsyncTask 了解AsyncTask异步,需要了解一下异步任务(多线程),什么是线程,可以这么说线程好比边吃饭边看电视,AsyncTask是为了方便后台线程中操作 ...

  8. Hive基础讲解

      一.Hive背景介绍 Hive最初是Facebook为了满足对海量社交网络数据的管理和机器学习的需求而产生和发展的.马云在退休的时候说互联网现在进入了大数据时代,大数据是现在互联网的趋势,而had ...

  9. servlet基础讲解

    基本知识一.Web结构1.两种应用程序 ①桌面应用程序:QQ.CS.MyEclipse.Office.DW.360.浏览器等必须下载.安装.桌面快捷方式.注册表信息.操作系统后台服务.占用操作系统端口 ...

随机推荐

  1. Rescue

    1039: Rescue Time Limit: 1 Sec  Memory Limit: 32 MBSubmit: 1320  Solved: 306 Description Angel was c ...

  2. 如何在 Ubuntu Linux 16.04上安装开源的 Discourse 论坛

    导读 Discourse 是一个开源的论坛,它可以以邮件列表.聊天室或者论坛等多种形式工作.它是一个广受欢迎的现代的论坛工具.在服务端,它使用 Ruby on Rails 和 Postgres 搭建, ...

  3. CentOS 7安装Splunk

    导读 Splunk是探索和搜索数据的最有力工具,从收集和分析应用程序.Web服务器.数据库和服务器平台的实时可视化海量数据流,分析出IT企业产生的海量数据,安全系统或任何商业应用,给你一个总的见解获得 ...

  4. 在html中注释对 <include XXXXXXXX />是没有影响的

    在html中注释对 <include XXXXXXXX />是没有影响的

  5. django 1.5+ 权限设计浅析

    权限关系图 依赖app: django.contrib.auth django.contrib.contenttype admin后台的权限控制解析 (path/to/django.contrib.a ...

  6. eclipse 启动后,啥也不干,就一直在loading descriptor for XXX (XXX为工程名),,其他什么操作都不能操作。 如下图所示,保存文件也无法保存。 这个怎么办?一年好几天,什么都干不了!!!!!

    解决办法: 解决办法是 断一下网就好了

  7. 【转】仿百度输入框智能提示的js代码

    转自:http://www.jb51.net/article/40783.htm 对于我这个JS菜鸟,能找到这样的实属不容易啊!!! 刚开始老大让做这个功能,真是一点头绪都没有,万分感谢!!! 最近客 ...

  8. 72 [面试题]如果不使用if-else和比较运算符,你知道如何求解2个数字中的较大一个吗?

    [本文链接] http://www.cnblogs.com/hellogiser/p/max-of-numbers-without-comparations.html [题目] 不使用if-else和 ...

  9. 【USACO】milk3

    倒牛奶的问题, 开始看感觉跟倒水的问题很像, 想直接找规律, 写个类似于循环取余的代码. 但后来发现不行,因为这道题有三个桶,水量也是有限制的.只好用模拟的方法把所有的情况都试一遍. 建一个state ...

  10. Android procrank , showmap 内存分析

    (一)DDMS 的Heap Dump 1) Data Object:java object. 2) Class Object:object of type Class, e.g. what you'd ...