java 获取异步数据_在一个方法内实现异步获取数据同步返回

背景

今天一个开发群里的小伙伴遇到一个需求大致意思是实现这样一个方法

public List getApnList(){//在主线成调用这个方法

//从网络获取数据

//同步返回

return list;

}

讨论

群里的小伙伴们一看,噶哈呢这是,在主线程进行网络操作啊,不直接宕机了吗

于是一顿讨论后纷纷给出别的替代解决办法

Rxjava,Handler Thread,观察者模式接口,广播

这个小伙看了解决办法说:"要是能这样实现也不会来问了,这个是上层定义好的接口,不能改,而且是在主线成调用,我是要在这个里面实现掉接口获取,并将结果返回.我也很无奈"

思考

我一想,以前我也遇到过这种问题,在一个方法里异步获取数据,同步返回.但是后来都放弃了,换了上层接口,毕竟直接阻塞主线程一点都不够优雅

但是为了体现我Android大佬的身份

灵机一动,忽然想起了FutureTask这个类,Android只禁止了主线程做网络耗时操作,别的都是出个ANR啊,这个是不是也是呢,于是,就产生了下面的代码

public class MainActivity extends AppCompatActivity {

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

int i = -1;

i = getAPN();

System.out.println("do====result:"+i);

}

private Integer

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值