1.框架
loopj.com/android-async-http/
2.使用:
AsyncHttpClient client = new AsyncHttpClient(); client.get("http://www.google.com", new AsyncHttpResponseHandler() { @Override public void onSuccess(String response) { System.out.println(response); } });
注意坑:client推荐使用单例,但是不要随便放在class的static里面, 一定要放到application类里面。 否则切出应用2分钟后回来,请求失败了啊。
3.返回处理(以json为例,结合gson直接拿到返回对象)
new AsyncHttpResponseHandler() { public void onSuccess(String response) { UserInfoResp resp = new Gson().fromJson(response, UserInfoResp.class); } else { // 报错 progress.CloseProgress(); Toast.makeText(LoginActicity.this, resp.errMsg, Toast.LENGTH_SHORT).show(); } } @Override public void onFailure(int statusCode, Header[] headers, byte[] responseBody, Throwable error) { onFailurePrint(statusCode, headers, responseBody, error); } }); /** * 请求onFailur时候的错误打印模版 */ public static void onFailurePrint(int statusCode,Header[] headers, byte[] responseBody, Throwable error){ if(error!=null){ Log.e("ossclient", "statusCode="+statusCode,error); }else{ Log.e("ossclient", "statusCode="+statusCode+" without Exception"); } if (responseBody!=null) { try { Log.e("ossclient", new String(responseBody, "UTF-8")); } catch (UnsupportedEncodingException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
4. 批量图片上传; 如果需要等待全部结果的返回,可以使用 CountDownLatch
http://developer.android.com/reference/java/util/concurrent/CountDownLatch.html
原以为安卓里面没有这种java特性,于是自己写了老半天,主要是两个坑:
1.、 计数对象必须加volatile private volatile int count_OK = 0;
2、 需单独开线程来循环计数,如果主线程做循环计数,while会导致无法处理response。
//等待全部上传ok再提交后台 new Thread(){public void run(){ while(count_OK < size_ALL){ try { sleep(200); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } System.out.println("haha"); addPics(); }}.start();
相关推荐
递减锁存器CountDownLatch的使用以及注意事项!
主要介绍了Java CountDownLatch完成异步回调实例详解的相关资料,需要的朋友可以参考下
《java并发编程》中CountDownLatch和CyclicBarrier用法实例大全,几乎包含了所有重要的用法
利用 CountDownLatch 类实现线程同步,而不用回调机制。详见我的博文 http://blog.csdn.net/kroclin/article/details/37956949
目录 CountDownLatch是什么? CountDownLatch如何工作? 在实时系统中的应用场景 应用范例 常见的面试题 代码样例
在网上找的一个CountDownLatch的学习demo,感觉很不错,就摘抄过来了
CountDownLatch与thread.join()的区别
CountDownLatch Demo
NULL 博文链接:https://cpjsjxy.iteye.com/blog/2272451
并发编程之CountDownLatch
java并发编程中CountDownLatch和CyclicBarrier的使用借鉴.pdf
mybaits 多线程 实现数据批量插入 (运用CountDownLatch实现闭锁) 1、mybatis批处理 2、数据分批量查询 3、数据分批量插入
主要为大家详细介绍了CountDownLatch的使用说明,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
主要介绍了Java中CountDownLatch进行多线程同步详解及实例代码的相关资料,需要的朋友可以参考下
1.2 CountDownLatch概述 CountDownLatch的基本用法 2.1 创建CountDownLatch对象 2.2 await()方法 2.3 countDown()方法 实现多线程任务的同步 3.1 场景介绍 3.2 使用CountDownLatch实现同步 主线程等待多个线程完成 ...
CountDownLatch是一个同步工具类,它通过一个计数器来实现的,初始值为线程的数量。每当一个线程完成了自己的任务,计数器的值就相应得减1。当计数器到达0时,表示所有的线程都已执行完毕,然后在等待的线程就可以恢复...
Java并发编程一CountDownLatch、CyclicBarrier、Semaphore初使用 CountDownLatch、CyclicBarrier、Semaphore这些线程协作工具类是基于AQS的,看完这篇博客后可以去看下面这篇博客,了解它们是如何实现的。 Java并发...
TestSemaphore、TestLock、TestCyclicBarrier、CountdownLatchTest、LRUCache 博文链接:https://uule.iteye.com/blog/1543958
主要为大家详细介绍了Java中CountDownLatch用法,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
其实我自认为CountDownLatch类是进入AQS世界一个非常好非常好的通道,因此写完这篇文章,我打算再写一篇关于CountDownLatch源码的文章。 1 原理简介 CountDownLatch原理可以用下图进行表示: 这里注意一下: 每个...