android HttpGet 另开线程获取网络数据问题
android跨线程通讯可以使用android.os.Handler-android.os.Message这两类对象完成。 public static void getResultForHttpGet(final String url,final Handler handler) throws ClientProtocolException, IOException{
new Thread(){
@Override
public void run() {
String result="";
HttpGet httpGet=new HttpGet(url);//
HttpResponse response=new DefaultHttpClient().execute(httpGet);
int statusCode=response.getStatusLine().getStatusCode();
if(statusCode==200){
HttpEntity entity=response.getEntity();
result=EntityUtils.toString(entity, HTTP.UTF_8);
}
Message msg=handler.obtainMessage(statusCode, result);
msg.sendToTarget();
}
}.start(); }
原获得返回值之后的代码写到 handler参数对象重写的handleMessage方法中,如果直接发起请求的类不是Activity,可以自定义接口来将信息传递给Activity。
private Handler handler1 = new MyHandler();
private class MyHandler extends Handler{
public void handleMessage(Message msg) {
int statusCode = msg.what;
if(statusCode==200){
String result = msg.obj.toString();
//do your business
}else{
// throw exception or show error message
}
}
};
private Handler handler2 = new MyHandler2();
private class MyHandler2 extends Handler{
public void handleMessage(Message msg) {
int statusCode = msg.what;
if(statusCode==200){
String result = msg.obj.toString();
//do other business
}else{
// throw exception or show error message
}
}
};
此外handler的post(Runnable r)方法也是跨线程操作的重要方法 //注意,若如此做,在Activity中构建的handler对象在Activity销毁后仍然有可能接收消息并执行handleMessage方法,应设法避免。关键字:handler内存泄漏
android HttpGet 另开线程获取网络数据问题的更多相关文章
- Android利用Get、Post 获取网络数据
首先是Get: 布局非常easy.就一个button,主要看一下MainActivity吧: package com.francis.httpget; import android.app.Activ ...
- [置顶] 获取网络数据中的数组显示成ListView的简单流程
首先说一下 这是我自己的个人笔记,如果想看看,不用看细节,可以看流程. 定义一个线程池 ExecutorService pool = Executors.newFixedThreadPool(15) ...
- Android中获取网络数据时的分页加载
//此实在Fragment中实现的,黄色部分为自动加载,红色部分是需要注意的和手动加载, 蓝色部分是睡眠时间,自我感觉不用写 ,还有就是手动加载时,不知道为什么进去后显示的就是最后一行,求大神 ...
- android—获取网络数据
取网络数据主要靠发交易(或者说请求,接口等),而这些交易由java中的网络通信,HttpURLConnection和HttpClient实现,以下是具体例子. 大家都知道,网络通信,发送请求有两种 ...
- ListView获取网络数据并展示优化练习
权限: <uses-permission android:name="android.permission.INTERNET"></uses-permission ...
- Swift实战-豆瓣电台(三)获取网络数据
观看地址:http://v.youku.com/v_show/id_XNzMwMzQxMzky.html 这节内容,我们先说了怎么将storyboard中的组件在类中进行绑定.然后写了一个类用来获取网 ...
- 使用NSURLSession获取网络数据和下载文件
使用NSURLSession获取网络数据 使用NSURLSession下载文件
- Http方式获取网络数据
通过以下代码可以根据网址获取网页的html数据,安卓中获取网络数据的时候会用到,而且会用Java中的sax方式解析获取到数据.(sax解析主要是解析xml)具体代码如下: package com.wy ...
- Swift - 异步获取网络数据封装类
使用NSURLConnection.sendAsynchronousRequest()可以采用异步获取的方式取得数据.下面通过对数据获取类进行封装,演示如何进行数据请求与接收. 1,HttpContr ...
随机推荐
- [TYVJ] P1044 数字三角形
数字三角形 背景 Background 09年 USACO 11月月赛 铜牌第一道 描述 Description 示出了一个数字三角形. 请编一个程序计算从顶至底的某处的一条路径,使该路径所经过 ...
- 大端模式&小端模式、主机序&网络序、入栈地址高低问题
一.大端模式&小端模式 所谓的“大端模式”,是指数据的低位(就是权值较小的后面那几位)保存在内存的高地址中,而数据的高位,保存在内存的低地址中,这样的存储模式有点儿类似于把数据当作字符串顺序处 ...
- LeetCode_Jump Game II
Given an array of non-negative integers, you are initially positioned at the first index of the arra ...
- HDOJ2553-N皇后问题(DFS)
N皇后问题 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total Sub ...
- MongoDB基本命令随便敲敲
1,mongoDB状态,版本,当前连接的数据库名称
- Pros and Cons of T4 in Visual Studio 2008
Oleg Sych - » Pros and Cons of T4 in Visual Studio 2008 Pros and Cons of T4 in Visual Studio 2008 Po ...
- Unity 鼠标点击左右移动,人物跟随旋转
上代码: using UnityEngine; using System.Collections; public class Test : MonoBehaviour { private Vector ...
- Eclipse选中变量名,相同变量都变色显示
Eclipse选中变量名,相同变量都变色显示 java文件的设置"Window"-"preferences"-"Java"-"Ed ...
- java一个简单的管理系统
用java实现的简单管理系统 运行出来的状态 实现了新增.删除.借出.归还.排行榜简单的功能! 下面是简单的代码 首先定义一个书籍类,自己打开哦! public class Book implemen ...
- 采用标准c进行目录文件遍历
图像处理的时候经常需要对一个目录的所有图像进行处理,遍历文件得c代码: 在windows中需要使用到宽字符. 另外,可以使用opencv封装的目录访问操作,下次给出. // DirTraverse.c ...