博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
android HttpGet 另开线程获取网络数据问题
阅读量:4551 次
发布时间:2019-06-08

本文共 1891 字,大约阅读时间需要 6 分钟。

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内存泄漏

转载于:https://www.cnblogs.com/zhujiabin/p/4742301.html

你可能感兴趣的文章
【TensorFlow篇】--DNN初始和应用
查看>>
潇洒鸿图
查看>>
SerializableMaplist传递数据
查看>>
javascript_json创建对象
查看>>
实验吧CTF题库 Forbidden 利用burpsuite进行抓包改包
查看>>
深度优先算法与广度优先算法
查看>>
提交图片
查看>>
走进AngularJs(一)angular基本概念的认识与实战
查看>>
python 传参问题
查看>>
rpm命令的使用
查看>>
python 面向对象
查看>>
暑假第一周进度总结
查看>>
The Anatomy of a COM Server(Chapter 2 of COM and .NET Interoperability) part2
查看>>
mysql的Navicat查看数据库的ER图
查看>>
A熟知SP.NET---WebForms UnobtrusiveValidationMode 必须“jquery”ScriptResourceMapping。
查看>>
alternatives命令使用方法
查看>>
IDEA Maven配置
查看>>
mapreduce 实现矩阵乘法
查看>>
Jquery EasyUI封装简化操作
查看>>
OO第一单元总结
查看>>