融雲暱稱錯亂問題(非同步請求問題)
請求介面要注意非同步同步問題(融雲暱稱錯亂問題)
應用場景:
一般發生在快速多次請求介面上,有可能介面還沒返回,這時候你請求了下一次了,這樣變數的值變了,但是前一個請求返回中有需要用到。這時就會出現錯亂。
直接看程式碼
public class UserInfoPresenter { private String to_account; public void getIMUserInfo(String to_account){ this.to_account = to_account; HashMap<String,Object> map = new HashMap<>(); map.put("to_account",to_account); HttpUtils.noCacheRequest(MyApplication.getContext(), Contacts.RC_IM_USER_INFO, map, callBack, IMUserInfoResult.class); } /** * desc:token回撥 * create by cong on 2018/4/27 9:56 * */ private ResponseCallBack<IMUserInfoResult> callBack = new ResponseCallBack<IMUserInfoResult>() { @Override public void onError(int code, Throwable e) { e.printStackTrace(); } @Override public void onCache(IMUserInfoResult cache) { } @Override public void onResponse(IMUserInfoResult obj) { if (obj.getCode() == ResultCodes.GET_IM_USER_INFO_SUCCESS) { RongIM.getInstance().refreshUserInfoCache(new UserInfo(to_account,obj.getObj().getNickname(), Uri.parse(obj.getObj().getAvatar()))); if(to_account.equals(Contacts.KEFU_ID)){ //to do something } } } @Override public void onFinish() { } };}
仔細看看這程式碼有沒有問題。
盯著to_account看
如果快速請求呢