84669 Lernen von Personen
152542 Lernen von Personen
20005 Lernen von Personen
5487 Lernen von Personen
7821 Lernen von Personen
359900 Lernen von Personen
3350 Lernen von Personen
180660 Lernen von Personen
48569 Lernen von Personen
18603 Lernen von Personen
40936 Lernen von Personen
1549 Lernen von Personen
1183 Lernen von Personen
32909 Lernen von Personen
认证0级讲师
用Handler:
//在onCreate()方法外定义一个Handler : Handler myHandler = new Handler() { public void handleMessage(Message msg) { switch (msg.what) { case UI_OPRATION: doSomething(); break; } super.handleMessage(msg); } }; //调用处 ... String version = response.body().string(); myHandler.sendMessage(UI_OPRATION); ...
推荐rxjava+retrofit
//方法一 message.obj = version; //方法二 Bundle bundle = new Bundle(); bundle.putCharSequence("你的KEY",version); message.setData(bundle); //UI里的handle里面用 Bundle bundle = message.getData(); String version = bundle.getCharSequence("你的KEY"); //或者直接 String version = message.getData().getCharSequence("你的KEY"); //当然,注意判空哦
不贴代码,只讲一下思路。本来呢,异步进行网络请求,除了避免anr之外,还有一个重要的原因那就是实现并行操作。而你想要的效果其实是同步执行的效果。所以实现方式就是handler处理数据,另外用一个loading view来隔离用户操作。拿到回调之后再处理。
你请求到数据后直接把version 用msg.obj=version装进去,然后在OnCreate中handleMessage(Message msg)获取version再继续异步请求数据就可以啦啊
version
msg.obj=version
handleMessage(Message msg)
楼上几个答案都不错了。我额外来一下,square家族里okhttp非常好用,如果加上家族本身的retrofit就更加好用了,Retrofit+Rx对于线程间的处理非常良好,异常处理也非常好。
用Handler:
推荐rxjava+retrofit
不贴代码,只讲一下思路。
本来呢,异步进行网络请求,除了避免anr之外,还有一个重要的原因那就是实现并行操作。而你想要的效果其实是同步执行的效果。
所以实现方式就是handler处理数据,另外用一个loading view来隔离用户操作。拿到回调之后再处理。
你请求到数据后直接把
version
用msg.obj=version
装进去,然后在OnCreate中handleMessage(Message msg)
获取version再继续异步请求数据就可以啦啊楼上几个答案都不错了。我额外来一下,square家族里okhttp非常好用,如果加上家族本身的retrofit就更加好用了,Retrofit+Rx对于线程间的处理非常良好,异常处理也非常好。