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只能被执行一次,否则多次调用时将会出现异常;
AsyncTask的基础讲解的更多相关文章
- Verilog语法基础讲解之参数化设计
Verilog语法基础讲解之参数化设计 在Verilog语法中,可以实现参数化设计.所谓参数化设计,就是在一个功能模块中,对于一个常量,其值在不同的应用场合需要设置为不同的置,则将此值在设计时使用 ...
- 原生AJAX基础讲解及兼容处理
原文:原生AJAX基础讲解及兼容处理 AJAX = Asynchronous JavaScript and XML (异步的JavaScript和XML). AJAX不是新技术 ,但却是热门的技术.它 ...
- JavaScript继承基础讲解,原型链、借用构造函数、混合模式、原型式继承、寄生式继承、寄生组合式继承
说好的讲解JavaScript继承,可是迟迟到现在讲解.废话不多说,直接进入正题. 既然你想了解继承,证明你对JavaScript面向对象已经有一定的了解,如还有什么不理解的可以参考<面向对象J ...
- Android学习笔记-Adapter基础讲解
本节引言 从本节开始我们要讲的UI控件都是跟Adapter(适配器)打交道的,了解并学会使用这个Adapter很重要, Adapter是用来帮助填充数据的中间桥梁,简单点说就是:将各种数据以合适的形式 ...
- 第二十四节:Java语言基础-讲解数组的综合应用
数组的综合应用 // 打印数组 public static void printArray(int[] arr) { for(int x=0;x<arr.length;x++) { if(x!= ...
- 小D课堂 - 新版本微服务springcloud+Docker教程_2_02 微服务核心基础讲解
笔记 2.微服务核心基础讲解 简介:讲解微服务核心知识 :网关.服务发现注册.配置中心.链路追踪.负载均衡器.熔断 1.网关:路由转发 + 过滤器 ...
- Android精通之AsyncTask与ListView讲解
版权声明:未经博主允许不得转载 AsyncTask 了解AsyncTask异步,需要了解一下异步任务(多线程),什么是线程,可以这么说线程好比边吃饭边看电视,AsyncTask是为了方便后台线程中操作 ...
- Hive基础讲解
一.Hive背景介绍 Hive最初是Facebook为了满足对海量社交网络数据的管理和机器学习的需求而产生和发展的.马云在退休的时候说互联网现在进入了大数据时代,大数据是现在互联网的趋势,而had ...
- servlet基础讲解
基本知识一.Web结构1.两种应用程序 ①桌面应用程序:QQ.CS.MyEclipse.Office.DW.360.浏览器等必须下载.安装.桌面快捷方式.注册表信息.操作系统后台服务.占用操作系统端口 ...
随机推荐
- vim设置语法高亮
在vim安装目录中的_vimrc修改,加上以下的代码. set nu! colorscheme desert syntax enable syntax on
- ExtJS学习之路第一步:对比jQuery,认识ExtJS
最近纷杂的事情比较多了,奔波ing!所以,Node.js 和Canvas动画系列都停止了,等稳定了再重拾书本继续学习!因为某种原因最近在看ExtJS,分享下学习的心得,希望对同道中人有所帮助. 第一用 ...
- 多线程 or 多进程 (转强力推荐)
在Unix上编程采用多线程还是多进程的争执由来已久,这种争执最常见到在C/S通讯中服务端并发技术 的选型上,比如WEB服务器技术中,Apache是采用多进程的(perfork模式,每客户连接对应一个进 ...
- FineUI第六天---表单控件
表单控件 所有表单控件都有的属性有: ShowLabel:是否显示标签(默认值:true). ShowEmptyLabel:是否显示空白的标签(默认值:false). Label:标签文本(默认值:& ...
- Windows下Cygwin添加右键菜单
在http://herry2013git.blog.163.com/blog/static/2195680112013437139447/看到一篇文章,将Cypwin加入右键菜单,方便使用. 为了更傻 ...
- TokuDB的特点验证 - billy鹏
TokuDB的特点验证 - billy鹏 时间 2014-03-03 14:28:00 博客园_billy鹏的足迹原文 http://www.cnblogs.com/billyxp/p/35674 ...
- BASH相关
颜色 http://www.cnblogs.com/lr-ting/archive/2013/02/28/2936792.html http://segmentfault.com/q/10100000 ...
- (转)Sublime Text 2 2.0.2 序列号
----- BEGIN LICENSE -----Andrew WeberSingle User LicenseEA7E-855605813A03DD 5E4AD9E6 6C0EEB94 BC9979 ...
- canvas API ,通俗的canvas基础知识(五)
前几期讲的都是路径图形的绘图,这节我们要讲的是如何在画布上操作图片,因为图形画不了漂亮妹子(画图高手忽略不计),想画美女怎么办?跟我来: 想要在画布中插入一张图片,我们需要的方法是这位大侠: draw ...
- Java for LeetCode 037 Sudoku Solver
Write a program to solve a Sudoku puzzle by filling the empty cells. Empty cells are indicated by th ...