AsyncTask主要用来更新UI线程,比较耗时的操作可以在AsyncTask中使用。
AsyncTask是个抽象类,使用时需要继承这个类,然后调用execute()方法。注意继承时需要设定三个泛型Params,Progress和Result的类型,如AsyncTask<Void,Inetger,Void>:
- Params是指调用execute()方法时传入的参数类型和doInBackgound()的参数类型
- Progress是指更新进度时传递的参数类型,即publishProgress()和onProgressUpdate()的参数类型
- Result是指doInBackground()的返回值类型
上面的说明涉及到几个方法:
- doInBackgound() 这个方法是继承AsyncTask必须要实现的,运行于后台,耗时的操作可以在这里做
- publishProgress() 更新进度,给onProgressUpdate()传递进度参数
- onProgressUpdate()
在publishProgress()调用完被调用,更新进度
好了,看下实际的例子,了解一下怎么使用吧:
-
publicclassMyActivityextendsActivity
-
{
-
privateButtonbtn;
-
privateTextViewtv;
-
@Override
-
publicvoidonCreate(BundlesavedInstanceState)
-
{
-
super.onCreate(savedInstanceState);
-
setContentView(R.layout.main);
-
btn=(Button)findViewById(R.id.start_btn);
-
tv=(TextView)findViewById(R.id.content);
-
btn.setOnClickListener(newButton.OnClickListener(){
-
publicvoidonClick(Viewv){
-
update();
-
}
-
});
-
}
-
privatevoidupdate(){
-
UpdateTextTaskupdateTextTask=newUpdateTextTask(this);
-
updateTextTask.execute();
-
}
-
-
classUpdateTextTaskextendsAsyncTask<Void,Integer,Integer>{
-
privateContextcontext;
-
UpdateTextTask(Contextcontext){
-
this.context=context;
-
}
-
-
-
-
-
@Override
-
protectedvoidonPreExecute(){
-
Toast.makeText(context,"开始执行",Toast.LENGTH_SHORT).show();
-
}
-
-
-
-
@Override
-
protectedIntegerdoInBackground(Void...params){
-
inti=0;
-
while(i<10){
-
i++;
-
publishProgress(i);
-
try{
-
Thread.sleep(1000);
-
}catch(InterruptedExceptione){
-
}
-
}
-
returnnull;
-
}
-
-
-
-
-
@Override
-
protectedvoidonPostExecute(Integerinteger){
-
Toast.makeText(context,"执行完毕",Toast.LENGTH_SHORT).show();
-
}
-
-
-
-
-
@Override
-
protectedvoidonProgressUpdate(Integer...values){
-
tv.setText(""+values[0]);
-
}
-
}
-
}
-
分享到:
相关推荐
Android最全最简单的异步任务AsyncTask使用解析.一步到位彻底理解异步任务。
Android中的异步任务机制 Android中AsyncTak的使用与源码分析 Android AsyncTask 完全解析,带你从源码的角度彻底理解 Android 异步消息处理机制完全解析,带你从源码角度彻底理解 Android 异步消息处理机制...
综述 在Android中,我们需要进行一些耗时的操作,会将这个操作放在子线程中进行。在子线程操作完成以后我们可以通过Handler进行发送消息,通知UI进行一些更新...它是一个轻量级的异步任务类,它的后台任务在线程池
包含通过json解析网络数据,添加到listView中显示出来,并有多线程和AsyncTask异步加载方式。
本文主要介绍Android带进度条的下载图片示例(AsyncTask异步任务)的方法解析。具有很好的参考价值。下面跟着小编一起来看下吧
不过为了更加方便我们在子线程中更新UI元素,Android从1.5版本就引入了一个AsyncTask类,使用它就可以非常灵活方便地从子线程切换到UI线程,我们本篇文章的主角也就正是它了。 AsyncTask很早就出现在Android的API里...
如果异步任务完成前,用户离开Activity或者设置发生改变,ImageView也可能不存在。 class BitmapWorkerTask extends AsyncTask<Integer> { private final WeakReference<ImageView> imageViewReference; private ...
android.os.AsyncTask,一个执行异步操作的类,我们可以使用它来处理后台任务,并且在UI线程中处理结果,而无需关心线程的问题。 AsyncTask 内部是使用 {@link Thread}和{@link Handler}来实现的。理想情况下,应将...
异步任务AsyncTask执行耗时任务-音乐的收藏(使用到数据库)操作及音乐的搜索等需要访问网络的操作; 自定义view实现圆形专辑图片,滚动歌词,支持下拉刷新的音乐列表; Json解析网络响应,正则表达式解析歌词; ...
使用ListView和异步加载(AsyncTask)来下载网络上的资源,然后用fastjson解析资源,并显示在ListView中。
AsyncTask是一个轻量级的异步任务类,它可以在线程池中执行后台任务,然后把执行的进度和结果传递给主线程并在主线程中更新UI。 AsyncTask这个类的声明如下 public abstract class AsyncTask<Params> 它提供了...
15.1 AsyncTask异步任务介绍一 15.2 AsyTask异步任务介绍二 15.3 Handler和Message(一) 15.4 Handler和Message(二) 15.5 Handler和Message(三) 15.6 Handler和Looper 15.7 Handler综合练习(图文混排)
本项目是根据慕课网《android必学-异步加载》视频教学所开发的一套异步加载网络资源的小demo.其中分别用到了多线程、AsyncTask实现异步加载的功能。 里面还包括了: json解析、网络请求、LruCache缓存、滚动优化等...
该Demo主要介绍使用HttpClient获取网络数据,然后经过JSON后显示出来。另外本文章用到了常用的异步加载技术,AsyncTask类。
LoaderManager异步加载、多线程(AsyncTask与Handler)、 百度地图等十五个模块,一共102集。 本网盘分享章节编号是按照视频更新的先后顺序编号的,具体学习可参考如下章节顺序: 【第一版第一章】老罗Android...
右边的异步任务,HttpClient创建,参数解析,错误处理全部交给网络处理模块来完成。由此来看,这个网络模块其实是重复性很高的开发工作,为了避免重复造轮子,下面就给大家介绍下我们工作中实现的网络操作模块及相应...
这是一个基于android平台开发的一个MP3播放器,所使用的技术有AsyncTask 异步搜索sd卡下的mp3文件,ViewPager listview 做ui显示,启动服务播放MP3,服务器搜索MP3,多线程下载MP3,现在播放,上一首,下一首,暂停/...
编写方法调用接口获取新闻信息,解析新闻信息,把解析后的新闻显示到View上。实现获取不同分类新闻列表功能...使用AsyncTask异步更新UI界面。异步加载新闻内容。 数据库采用mysql。 如果有不懂得地方,可以留言,必回!
3. AsyncTask异步处理任务 15 4. 音频播放 20 8. 视频播放 26 9. 使用摄像头拍照 32 10. 视频录制 39 11. 国际化 43 12. 样式和主题 46 13. 编码实现软件界面 49 14. 标签页(选项卡) 51 15. 用HTML实现网页界面 57...