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讲义 第二版> 下载地址, 我个人认为最适 ...
随机推荐
- .net Mvc文件下载的功能,大文件下载完成之后修改数据库功能
原文:.net Mvc文件下载的功能,大文件下载完成之后修改数据库功能 我服务器上文件只能下载一次,下载了之后就不能下载了,大文件或网速不好时,可能服务端文件流发送完了,客户端还没下载完,导致下载失败 ...
- loj1341(数学)
传送门:Aladdin and the Flying Carpet 题意: 给出两个正整数1<=m<=n<=1e12.问N可以拆成多少对p*q,使得p和q中最小的不小于a,且p!=q ...
- 公布AppStore被拒绝的经历
我们知道IOS发布的版本有很多原因是苹果拒绝发表,我总结了这里3手头上做的原因,他拒绝游,包括同事.朋友拒绝的理由,IOS app参考朋友. 1. 使用非公开API该计划将被拒绝 2. beta版.d ...
- 向GridView的模板列绑定OnClientClick的函数时出现了奇怪的问题
原文:向GridView的模板列绑定OnClientClick的函数时出现了奇怪的问题 GridView的一个模板列中的内容是按钮,需要实现以下的效果: GridView分页显示数据,点击编辑按钮(模 ...
- Codeforces Round #254 (Div. 1)-A,B
A:选取两点一边就能够了,非常明显能够想出来... 可是一開始看错题了,sad.... #include<stdio.h> #include<string.h> #includ ...
- C++设计模式之建造者模式(三)
4.引入钩子方法的建造者模式 建造者模式除了逐步构建一个复杂产品对象外.还能够通过Director类来更加精细地控制产品的创建过程.比如添加一类称之为钩子方法(HookMethod)的特殊方法来控制是 ...
- SAE开发一个应用(不仅仅是建站)
参考http://jingyan.baidu.com/user/npublic/?un=944615045 http://sae.sina.com.cn/ 激活sae账户 登陆新浪云计算官方网站,网址 ...
- 使用Visual Studio 创建可视Web Part部件
使用Visual Studio 创建可视Web Part部件 可视Web Part部件是很强大的Web 部件.它提供内置设计器创建你的用户界面. 本文主要解说怎样使用Visual Studio 创建可 ...
- HDU2647-Reward(拓扑排序)
Reward Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Sub ...
- JAVA先进-设置(1)
>Arrays 基本阵列 1.常见的数组产生于main() 函数,数组下标的索引不能超过0到int的范围 2.当程序试图訪问数组的第一个或者最后一个数据的时候,会发生ArrayIndexOutO ...