扫码关注官方订阅号
认证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对于线程间的处理非常良好,异常处理也非常好。
微信扫码关注PHP中文网服务号
QQ扫码加入技术交流群
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号
PHP学习
技术支持
返回顶部
用Handler:
推荐rxjava+retrofit
不贴代码,只讲一下思路。
本来呢,异步进行网络请求,除了避免anr之外,还有一个重要的原因那就是实现并行操作。而你想要的效果其实是同步执行的效果。
所以实现方式就是handler处理数据,另外用一个loading view来隔离用户操作。拿到回调之后再处理。
你请求到数据后直接把
version用msg.obj=version装进去,然后在OnCreate中handleMessage(Message msg)获取version再继续异步请求数据就可以啦啊楼上几个答案都不错了。我额外来一下,square家族里okhttp非常好用,如果加上家族本身的retrofit就更加好用了,Retrofit+Rx对于线程间的处理非常良好,异常处理也非常好。