如何在一个有返回值的方法中进行网络操作,然后返回网络操作后的值?
比如
private String A(){
StringRequest stringRequest=new StringRequest(Request.Method.POST, MyApplication.HOST + "/mobileLogin.do",
new Response.Listener<String>() {
@Override
public void onResponse(String s) {
sout("获取的"+s)
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError volleyError) {
}
}){
@Override
protected Map<String, String> getParams() throws AuthFailureError {
Map<String,String> map=new HashMap<>();
map.put("msgno","001010");
map.put("uid",s);
return super.getParams();
}
};
requestQueue.add(stringRequest);
}
我想返回这个获取的结果,但是volley的操作是在异步,根本没法return,那这个怎么办
Anda boleh menggunakan panggil balik antara muka
Isytiharkan antara muka dahulu
di dalam kaedahkemudian gunakan
Gunakan RxJava atau EventBus
Kemudian lakukannya dalam fungsi panggil balik tak segerak. Atau masukkan kaedah atau fungsi di mana pulangan tak segerak berlaku.
Anda boleh mengubah fikiran anda dan tidak perlu mengembalikan keputusan dalam
volley
. Apabila permintaan itu berjaya, hasilnya dirangkumkan, contohnya, menggunakanList
secara langsung atau digabungkan dengan kelas untuk menyimpannya, dan kemudian data dan operasi boleh diperoleh daripadanya melalui mekanismeHandler
.Apabila saya menggunakan Rongyun, saya memerlukan pembekal maklumat pengguna Mengikut stringId yang diluluskan oleh kaedahnya, saya kemudian menggunakan id ini untuk mendapatkan maklumat yang sepadan dengan id ini dari pelayan saya,,, jadi tidak ada cara untuk beroperasi. tampar dulu
RongIM.setUserInfoProvider(RongIM.UserInfoProvider() baharu {Anda boleh menggunakan Handler secara langsung
Saya membaca semula soalan anda dan nampaknya ia melibatkan panggilan balik berbilang lapisan, saya rasa RxAndroid lebih sesuai di sini
Saya baru sahaja bermula dan kod yang saya tulis tidak begitu cantik. . . Mendapat bimbingan daripada pakar