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讲义 第二版> 下载地址, 我个人认为最适 ...
随机推荐
- VSTO学习笔记(四)从SharePoint 2010中下载文件
原文:VSTO学习笔记(四)从SharePoint 2010中下载文件 上一次我们开发了一个简单的64位COM加载项,虽然功能很简单,但是包括了开发一个64位COM加载项的大部分过程.本次我们来给CO ...
- CF 518D(概率dp)
传送门:Ilya and Escalator 题意:有n个人排队进车厢,每秒只能进一个人,而且第1个人进了后面的人才能进,第一个人每秒进入车厢的概率为p,不进的概率为1-p,求t秒后进入车厢总人数的数 ...
- Struts2中指定的校验文件不起作用的原因
转载请注意出处:http://blog.csdn.net/bettarwang/article/details/39801733 我们知道,假设要为某个Action指定校验文件.那么就要将" ...
- [置顶] ANDROID 返回,菜单和HOME键的监听
------网上找了很多资料,项目中使用,最后将经验总结如下: 1,返回和菜单键是可以直接重写onKeyDown(int keyCode, KeyEvent event) 方法监听: @Overrid ...
- MVAPI第一个版本架构图
MVAPI采用矢量与栅格结合的方式进行移动地图的显示. 进过几个月,目前终于可以完成基本的地图显示及操作功能.还有待实现的是各种性能及效果优化.3D地物等. 发一个1.0的架构图留存一下.(虽然目前还 ...
- __iomem解析
以下是在学习电池驱动中遇到的知识点之_iomem A new I/O memory access mechanism Most reasonably current cards for the PCI ...
- Cordova CLI源码分析(四)——创建工程
在第一篇分析我们曾经举例,创建一个新工程, cordova create hello hellotest com.xxx.hellotest cli.js文件分析命令行参数后,会走到 else if ...
- Linux下hp打印机驱动hplip分析
Hplip分析 版本号是2.14,源代码位置:http://hplipopensource.com. 图的来源:http://hplipopensource.com/node/128. 实践中使用的打 ...
- Windows phone 8 学习笔记(2) 数据文件操作
原文:Windows phone 8 学习笔记(2) 数据文件操作 Windows phone 8 应用用于数据文件存储访问的位置仅仅限于安装文件夹.本地文件夹(独立存储空间).媒体库和SD卡四个地方 ...
- Spring Bean的作用域(转)
Spring Bean的作用域 .singleton [单例] eg:<bean id="personService" class="com.yinger.ser ...