对于Android的IPC来说,除了Handler和Looper之外,还有另外一种简便的方法来实现多线程的通信,那就是AsyncTask。AsyncTask是一个异步的方法,它允许背景运算并把结果更新到前台的UI线程之上。要实现一个AsyncTask主要有4个步骤,但并不是每一个步骤都是必需的。 ? 这四个步骤是: onPreExecute()?执行背景运算前任务的初始化; doInBackground(Params...)这是AsyncTask最核心的函数,即是做背景运算;它在第一步完成之后被调用,通常在这步中还会调用方法publishProgress(Progress...)将运算结果更新到UI主线程上; onProgressUpdate(Progress...)是在publishProgress(Progress...)调用之后被执行的,需要注意到是这步执行的时间是未定的,通常在这一步中会更新相关UI; onPostExecute(Result)这一步同样是和UI相关,将运算结果Result当作参数传递给UI。 ? 大家可能已经注意到AsyncTask除了四大步之外,还有三个重要的参数:AsyncTask<Params,?Progress,?Result>。三个参数为通用类型,Params是传给任务初始化的参数,Progress是做背景运算过程中和UI交互的参数,Result是背景运算传递给UI的结果。 ? 利用好这四大步和三个参数,我们可以方便的写出上节例子中的Demo: 在这个Demo中只有第二和第三步,只有第二个参数params,是一个整型参量,把下载数据包的进度更新给UI Progressbar显示。 ? 另外,使用AsyncTask需要注意以下几点: 1.?AsyncTask的实例只能在UI线程中创建; 2. dl.execute()方法只能在UI线程中调用,并且只能调用一次,否则会抛异常。
详细解决方案
Android Framework系列之IPC(2)
热度:23 发布时间:2016-05-01 16:49:31.0
相关解决方案
- java 的升格比.net framework 的 差好多了哦
- spring framework 3.0.2之后的版本为什么没有依赖包了
- android 读取byte[]中的元素解决方案
- android 标题栏兑现方式
- android 中Activity向BroadcastReceiver发送数据,该怎么解决
- Android 4.0 为什么模拟器老是提示小弟我谷歌拼音输入法已停止
- android:getSharedPreferences() 这是哪个类的方法解决思路
- android 怎么判断一个程序是否联网
- android 大量数据按周分组,该如何解决
- android RadioButton如何设置默认选中
- ksoap2-android-这个包,连接webService怎么设置超时
- android 怎么重新设置锚点
- android UI界面设计解决方案
- android 图片对象获取的有关问题
- android 怎么调用淘宝支付宝接口
- Android 沿袭InputMethodService自定义输入法
- android 关于服务连接的疑义
- android 两个activity如何通信
- android 怎么实现对view的放大和缩小
- android 教程解决方法
- android ID,该如何处理
- 准备复习2-3个月,看java+android,请问有经验者,怎么看效果最好》
- android UI线程与AsyncTask的有关问题
- nested exception is org.springframework.aop.framework.AopConfigException:
- netbeans下一版本6.1,将加入对PHP,Spring Framework 和 Hibernate Framework 提供整合级支持,请看来自这里的NetBeans官方计划!该怎么解决
- android(java)中的java.net能不能和c#的system.net.sockets进行tcp通信,该如何解决
- android ListView 中的onItemClick Intent 没法跳转
- android(java) 中文乱码的有关问题
- Managed Extensibility Framework 与Unity啥关系啊解决方案
- Play framework 2.0入门教程(3)