认证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
雷雷
不貼程式碼,只講一下思路。 本來呢,非同步進行網路請求,除了避免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對於線程間的處理非常良好,異常處理也非常好。