Android异步操作总结
Android中常常会有一些操作比方网络请求,文件读写。数据库操作。比較耗时,我们须要将其放在非UI线程去处理。此时。我们须要处理任务前后UI的变化和交互。我们须要通过类似js中异步请求处理,这里总结我所了解到的,方便自己记忆。也方便别人的浏览。
- AsyncTask
new AysncTask().execute();
AsyncTask会依照流程运行在UI线程和一个耗时的任务线程。
(1) onPreExecute() 执行预处理,它执行于UI线程,能够为后台任务做一些准备工作,比方绘制一个进度条控件。
(2) doInBackground(Params...) 后台进程运行的详细计算在这里实现,doInBackground(Params...)是AsyncTask的关键。此方法必须重载。在这种方法内能够使用publishProgress(Progress...)改变当前的进度值。
(3)onProgressUpdate(Progress...) 执行于UI线程。假设在doInBackground(Params...) 中使用了publishProgress(Progress...)。就会触发这种方法。
在这里能够对进度条控件依据进度值做出详细的响应。
(4)onPostExecute(Result) 执行于UI线程,能够对后台任务的结果做出处理,结果就是doInBackground(Params...)的返回值。此方法也要常常重载,假设Result为null表明后台任务没有完毕(被取消或者出现异常)。
2. Handler
创建Handler时须要传Lopper,默认是UI线程的。
通过Handler发送消息(Message)到主线程或者Handler的线程,
3. Activity.runOnUiThread(Runnable)
Runnable就可以在UI线程运行
4. View.post(Runnable)
Runnable执行在UI线程
View.post(Runnable)方法。在post(Runnable action)方法里,View获得当前线程(即UI线程)的Handler。然后将action对象post到Handler里。在Handler里,它将传递过来的action对象包装成一个Message(Message的callback为action),然后将其投入UI线程的消息循环中。
在Handler再次处理该Message时,有一条分支(未解释的那条)就是为它所设。直接调用runnable的run方法。而此时,已经路由到UI线程里,因此。我们能够毫无顾虑的来更新UI。
全部的异步操作原理本质都是通过Handler
基本上就这几种方式。当然也可自己使用消息循环常见类似的任务处理机制。
csdn博客编辑器不好用,也不支持markdown。这个是从我个人博客搬过来的,欢迎光临个人独立博客。
原文地址:http://blog.isming.me/blog/2014/03/16/androidyi-bu-cao-zuo-zong-jie/ ,转载请注明出处。
版权声明:本文博客原创文章,博客,未经同意,不得转载。
Android异步操作总结的更多相关文章
- ANDROID学习之路 转
版权声明:本文为 stormzhang 原创文章,可以随意转载,但必须在明确位置注明出处!!! 这篇博客背后的故事 一路走来很不容易,刚好知乎上被人邀请回答如何自学android编程, 就借这个机会在 ...
- Android 学习之路
转载:http://stormzhang.com/android/2014/07/07/learn-android-from-rookie/ 这篇博客背后的故事 一路走来很不容易,刚好知乎上被人邀请回 ...
- Android学习参考
收到一些朋友的微博私信,说能不能给Android新手们一些指导,我只能说指导谈不上,毕竟我也很多东西正在学习中,与此同时一大学同学准备转行Android,可以说是从头开始,那么我就姑且以一个过来人的身 ...
- Android学习之路
Android基础 整理下个人认为新手们必须要掌握的知识点,顺便也会附带相应觉得不错的讲解博客地址. 两分钟彻底让你明白Android Activity生命周期(图文)! Activity实际开发中使 ...
- Android Configuration change引发的问题及解决方法(转)
之前在学习Fragment和总结Android异步操作的时候会在很多blog中看到对Configuration Change的讨论,以前做的项目都是固定竖屏的,所以对横竖屏切换以及横竖屏切换对程序有什 ...
- Android Configuration change引发的问题及解决方法
之前在学习Fragment和总结Android异步操作的时候会在很多blog中看到对Configuration Change的讨论,以前做的项目都是固定竖屏的,所以对横竖屏切换以及横竖屏切换对程序有什 ...
- Android自学绝佳资料
本文转自stormzhang老师的博客:http://stormzhang.com/android/2014/07/07/learn-android-from-rookie 首先感谢stromzhan ...
- Android学习之路(转载)
原文地址:http://stormzhang.github.io/android/2014/07/07/learn-android-from-rookie/ 硬件 电脑–推荐Mac 首先声明我不是果粉 ...
- android 总结
两点说明: 1. 本文我的老大推荐给的, 我自己之前也写过自学的帖子, 现在看看感觉不是很完整, 故转载此篇 2. 本文最后附有<android讲义 第二版> 下载地址, 我个人认为最适 ...
随机推荐
- 2014/08/23——OJ出现waiting...
问题: 今天中午,裴主解决OJ他缓慢的问题后,开着.我跟着oj他递给发现了一个话题waiting该..... 和全哥.均觉得測评程序挂了.于是重新启动測系统,还waiting.....(測评系统的进程 ...
- poj 1011 Sticks ,剪枝神题
木棒 Time Limit: 1000MS Memory Limit: 10000K Total Submissions: 118943 Accepted: 27429 Description 乔治拿 ...
- NYOJ115 市叛乱 【SPFA】
城市平乱 时间限制:1000 ms | 内存限制:65535 KB 难度:4 描写叙述 南将军统领着N个部队,这N个部队分别驻扎在N个不同的城市. 他在用这N个部队维护着M个城市的治安,这M个城市 ...
- 抢车位中的排名bug(比較使用了无符号数)
昨天把这个发在了qzone,想来还是怪怪的,还是转过来不吧,纯当发现了一个虫子,玩笑一下.只是csdn如今不能贴图,挺郁闷的,原文在http://user.qzone.qq.com/110907073 ...
- 关于git的ssh-key:解决本地多个ssh-key的问题
在设置github的时候,官方的说明文档要求备份当前的id_rsa.然后生成一份新的私钥用于github的登陆.假设真这样做,那么新的私钥是无法再继续登陆之前的机器的. 这样的方法有点暴力- 还好ss ...
- 一篇哥们自己的写的IBM电话面试感想-@大国
两天没写博了,还是没有养成一个习惯.前天和昨天休息,和哥们几个出去打球,运动一下,放松下脑子.今天就补一篇我哥们自己的写的关于他的IBM电话面试的感想,希望能帮到有需要的人. ------------ ...
- POJ 36666 Making the Grade 简单DP
题意是: 给出n个数,让你用最小的花费将其改成非递增或非递减的 然后花费就是新序列与原序列各个位置的数的差的绝对值的和 然后可以看到有2000个数,数的范围是10亿 仔细观察可以想象到.其实改变序列中 ...
- Callable 获取线程返回值
allable与 Future 两功能是Java在兴许版本号中为了适应多并法才增加的,Callable是类似于Runnable的接口,实现Callable接口的类和实现Runnable的类都是可被其它 ...
- 悟道—位IT高管20年的职场心经(读书笔记五)
悟道--一位IT高管20年的职场心经 第五章 搞定老板 "老板就是老板" 这一点,你可能会忘了,他一定不会忘: "老板不会总是老板" 这一点,他可能会忘,你最好 ...
- 利用Sambaserver在Ubuntu系统和Win7系统间共享目录
1 介绍 如今是网络化的时代,我们每一个人要更好的发展.离不开网络化.信息化的支持.利用网络的支持.在不同的操作系统间共享文件等信息,是计算机专业学生必备的一项技能. 本文所讲的就是怎样建立.设置.链 ...