您的位置:首页 > 移动开发 > Android开发

Android多线程合并——使用CountDownLatch干掉第三方SDK的回调函数

2015-02-05 10:38 351 查看

原因:

有时候我们用的第三方SDK是一个回调函数,这样我们就不得不不把代码写在这些回调函数里,这样的写法其实很糟糕,至少扰乱了我们的逻辑。本身我们写的就是一个线程,第三方SDK又做了一个线程,我们又不知道什么时候回调函数触发,最简单的办法就是线程等待,然后再回调的时候调用停止等待,这也就是用CountDownLatch的作用了。

解决方案:

昨天无意间重构了下自己的网络框架,我的框架是要求在线程里只做数据解析,然后在handler里做逻辑处理,这样能保证手机流畅度。可是结果却不令人满意啊,因为我要知道融云的登录是否成功,之后才能在handler里处理,所以就想到了JAVA的这个函数CountDownLatch。
用法:
// 这里是创建一个CountDownLatch,用来做同步。
final CountDownLatch countDownLatch = new CountDownLatch(1);
// 这里是模拟融云的回调,用一个线程表示
new Thread(new Runnable() {

public void run() {
//模拟初始化数据
System.out.println("初始化结束");
// 当融云的回调函数完成以后就告诉我们的线程,可以继续了。
countDownLatch.countDown();
}
}).start();
// 等待融云的回调触发
try {
countDownLatch.await();
} catch (InterruptedException e) {

}
// 当你调用countDownLatch.countDown();以后我们的线程就不会处于等待状态了
System.out.println("回调完成");
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: