关于Android客户端异步执行的Handler实例(有源码,调试成功)
来源:互联网 发布:网络模特工资怎么算 编辑:程序博客网 时间:2024/06/05 21:01
这个部分的需求是这样的:在访问网络时,获取服务器返回来的JSON数据,并将数据存储到List中,在访问网络之后,在另外一个方法使用这个List。刚开始不是使用异步执行的,导致的结果是:访问网络时,List大小为2,再另外一个方法中List大小变为0, 也就是说访问网络之后,List没有传过来,因此List大小变为0。真正的原因是访问网络时,需一定的时间,List还没有传过来,就开始执行第二个方法了,所以List在后面的大小为0。要解决这个问题,我们采用异步执行。
异步执行主要有两种方法:1)Handler;2)Asynctask。
我这里主要使用第一种方法。不多说了,直接上Demo吧。
首先是自定义MyHandler,这个MyHandler继承Handler。
package com.fwzkj.tplp2015062501.web;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import com.fwzkj.tplp2015062501.domain.LockPark;import android.os.Handler;import android.os.Looper;import android.os.Message;public class MyHandler extends Handler {//空的构造函数public MyHandler() {super();}private ArrayList<User> userList;public ArrayList<User> getuserList() {return userList;}public void setuserList(ArrayList<User> userList) {this.userList = userList;} }
在访问网络时,获得对象,将对象存储到List中,然后就发送给handler。
//用Handler传递List Message msg = new Message();msg.obj = userList;msg.what = 1;handler.sendMessage(msg);System.out.println("已经传递了");
接着就是在主线程中接受该数据。
Handler handler = new MyHandler(){public void handleMessage(Message msg) { super.handleMessage(msg); if( msg.what == 1 ){ List<User> userlistout = (List<User>)msg.obj; System.out.println("传递过来之后LockList大小:"+userlistout.size());if( userlistout.size() > 0 ){ System.out.println("已经进来了!");SecondMethod();//这是第二个方法。在这个方法中就可以使用List了。}}}运行结果:
结果说明:传递之后大小变为了2,说明传递成功。
注意:大家在实际开发中,将user改成自己对应的实体,就可以使用了。
0 0
- 关于Android客户端异步执行的Handler实例(有源码,调试成功)
- Android客户端解析服务器端WebService返回来的JSON数据(有源码,调试成功)
- Android客户端请求服务器端C#的WebService(有源码,调试成功)
- Android百度地图自定义覆盖物的灵活实现(有源码,调试成功)
- android handler的两种用法(一种UI线程,另一种用于执行异步任务)
- Android中关于Handler Message Looper 异步消息处理机制的最完整分析 从源码角度进行剖析
- Android:异步消息Handler源码解析
- Android使用异步的误区(关于Handler.post的操作方式)
- [Android实例] android的消息处理机制(图+源码分析)——Looper,Handler,Message
- 关于 Android 异步消息处理机制 Handler
- SeetaFace编译成功(有windows及Android源码)
- Android 不可缺少的异步(Thread、Handler、AsyncTask)实例解析(在独立线程中进行地理位置编码)
- 关于Android的Handler
- 关于DWR的异步执行
- Android中使用Handler和异步任务(AsyncTack)来为UI线程执行费时操作
- Android中的Looper , Handler , Message的关系,异步消息处理的机制,根据源码分析
- 【 Android】handler异步消息处理机制完全解析,带你从源码的角度彻底理解
- Android异步显示网络上的图片(使用Handler)
- 大数据表分页的性能问题
- C# WinForm程序退出的方法
- Android 单线程下载与多线程下载
- 北大ACM3041——Asteroids~~最小顶点覆盖问题
- jquery 选择器(name,属性,元素)大全
- 关于Android客户端异步执行的Handler实例(有源码,调试成功)
- Android中获取屏幕相关信息(屏幕大小,状态栏、标题栏高度)
- HDU 5432 Pyramid Split 二分
- CentOS6.5安装 MariaDB Galera Cluster 10.0
- mini2440烧写linu内核以及文件系统
- Android 网络连接——URLConnection
- 如何成为一名卓越的前端工程师
- 省市联动 纯 HTML + JS
- bzoj-3456 城市规划