Android学习之异步任务AsyncTask
来源:互联网 发布:微信 for ubuntu 编辑:程序博客网 时间:2024/06/01 12:43
Android中有几种实现异步任务的方式,比如Handler,比如AsyncTask,Handler比较复杂,今天就不写了,相信不少童鞋都使用过AsyncTask,当然也有不少童鞋还不知道怎么用AsyncTask,今天就写下AsyncTask。AsyncTask和Handler有一些区别,简单来说就是单个异步任务时使用AsyncTask比较简单,多个异步任务时使用Handler比较方便。
AsyncTask有几个重要的是方法,来讲下常用的几个方法,以下是Demo:
/** * 主界面 * * @author yuzhentao */public class MainActivity extends Activity { private FrameLayout fl; private ProgressBar pb; private TextView tv; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(); initView(); } private void setContentView() { setContentView(R.layout.activity_main); } private void initView() { fl = (FrameLayout) findViewById(R.id.framelayout_activity_main); pb = (ProgressBar) findViewById(R.id.progressBar_activity_main); tv = (TextView) findViewById(R.id.textview_activity_main); findViewById(R.id.button_activity_main).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { new AsyncTask<Integer, Integer, String>() { @Override protected void onPreExecute() { super.onPreExecute(); fl.setVisibility(View.VISIBLE); tv.setText("0%"); } @Override protected void onPostExecute(String s) { super.onPostExecute(s); fl.setVisibility(View.INVISIBLE); Toast.makeText(MainActivity.this, s, Toast.LENGTH_SHORT).show(); } @Override protected void onProgressUpdate(Integer... values) { super.onProgressUpdate(values); String progress = values[0] + "%"; pb.setProgress(values[0]); tv.setText(progress); } @Override protected String doInBackground(Integer... params) { int i; for (i = 0; i <= 100; i += 10) { try { Thread.sleep(500); } catch (InterruptedException e) { e.printStackTrace(); } publishProgress(i); } return "异步任务执行完成"; } }.execute(); } }); }}
AsyncTask有3个参数
AsyncTask<Params, Progress, Result>
第一个参数用在doInBackground()中,这个参数的值由execute()传入。第二个参数用在onProgressUpdate()中,这个参数的值由doInBackground()中的publishProgress()传入。
第三个参数用在onPostExecute()中,这个参数的值由doInBackground()返回的值传入。
doInBackground()中不能执行UI相关的操作,不能在主线程执行,这些操作用在onProgressUpdate()、onPreExecute()和onPostExecute()中,doInBackground()是AsyncTask用来执行异步任务的核心,这里面可以做一些耗时的操作。
onPreExecute()用在异步任务执行前,onPostExecute()用在异步任务执行后,onProgressUpdate()用在异步任务执行时。
好,大概就是这样,最后是效果图:
1 0
- android学习之异步任务AsyncTask
- Android学习之异步任务AsyncTask
- Android之AsyncTask异步任务
- Android学习笔记:Android异步任务之AsyncTask基础
- 《老罗Android》学习之 AsyncTask异步任务
- android学习---异步任务(AsyncTask)
- android 学习--异步任务类AsyncTask
- 深入学习Android异步任务-AsyncTask
- Android学习笔记(39):异步任务AsyncTask
- Android异步任务之AsyncTask的使用
- Android异步任务之AsyncTask基本使用
- Android之AsyncTask异步任务详解总结
- Android异步任务处理之AsyncTask
- Android异步任务之AsyncTask源码解析
- Android AsyncTask 异步任务之源码解析
- Android异步任务机制之AsyncTask
- Android10--Android之异步任务AsyncTask
- Android异步任务机制之 AsyncTask
- 面向对象题
- learn python the hard way(笨办法学python) 练习46
- leetcode--Happy Number
- 【hdu 2222】Keywords Search
- JRockit检测Tomcat内存溢出JAVA内存泄漏问题
- Android学习之异步任务AsyncTask
- 日常开发常用的svn命令
- ViewPager 详解(二)---详解四大函数
- 数据结构之四叉树的实现
- ScrollView与ListView的相关问题
- FlexPaper控件实现文档的上传和预览
- git从gitHub下载代码
- PagerAdapter用法
- CentOS上配置hls流系统安装FFMPEG出错处理