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讲义 第二版> 下载地址, 我个人认为最适 ...
随机推荐
- hdu1059(多重背包)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1059 题意 : 按顺序读入一些列数,所对应的序列代表价值,数值代表个数(如a[5]=6 ,代表价值为五 ...
- 我的EJB学习历程
http://blog.csdn.net/sinapaper/archive/2004/06/28/28659.aspx http://blog.csdn.net/sinapaper/archive/ ...
- adt-bundle更新eclipse,以及搭建android环境
曾经开发一直去android官网下载adt-bundle的.里面已经包括了eclipse和android SDK,搭建android环境特别方便,仅仅须要3步:1.下载并安装jdk(也就是jar se ...
- python学习1(小白记录)
python创建cocos2d-x项目注意点1. 2.7.5版本号的.配置好环境变量之后.要切换到tools文件夹下.直接运行 python create_project.py ..........这 ...
- HashMap源码解读(转)
http://www.360doc.com/content/10/1214/22/573136_78188909.shtml 最近朋友推荐的一个很好的工作,又是面了2轮没通过,已经是好几次朋友内推没过 ...
- Mvc 异常处理 ajax的 和 不是ajax的!
using ImageUpload.Auth; using System; using System.Collections.Generic; using System.Linq; using Sys ...
- ecshop后台权限增加
1.在后台“推荐管理”里添加“推荐人分成”.“会员分成”两个操作功能以及权限 index.php?act=menu incluedes/inc_priv.php:权限对照表.inc_m ...
- 一个使用Java jdk8中Nashorn(Java javascript引擎)设计的Web开发框架
地址:https://github.com/iboxdb/hijk 採用给框架开发应用,简单直接.开发效率高 下载后 set PATH to /JAVA 8_HOME/bin jjs build.js ...
- windows phone 获取手机图片库中图片(4)
原文:windows phone 获取手机图片库中图片(4) 前置条件:手机和电脑未连接或连接电脑Zune软件关闭(与Zune软件连接时不允许访问图片库): 版本7.1 获取手机图片库图片的两种方式: ...
- JSP生成word文件
1.jsp生成word文件,直接改动jsp格式: <%@ page contentType="application/vnd.ms-word;charset=GB2312"% ...