注册

环信单聊用户头像设置时机问题(Android)


EMClient.getInstance().login(userId, userId, new EMCallBack() { 
  @Override public void onSuccess() { 
    EMClient emClient = EMClient.getInstance(); 
    emClient.groupManager().loadAllGroups(); 
    emClient.chatManager().loadAllConversations();
     //TODO: 查询数据库是否有 
    EaseUI.getInstance().setUserProfileProvider(new EaseUI.EaseUserProfileProvider() { 
      @Override 
      public EaseUser getUser(String username) {
        return getUserInfo(username); 
  } });
我的思路是:通过getUserInfo()去本地数据库查找用户头像和昵称,如果本地没有,就去服务器下载。
问题是如果去服务器下载肯定要开线程,这时候getUser()返回的就会是空了,等我头像信息下载完成之后我要怎么再设置到用户头像上。
 
已邀请:

陈日明 - 90后IT男

接 楼上的话,, 
你需要在application 里面去setUserProfileProvider,同样,在 登录的地方,你 应该去吧自己的信息请求下来之后, 然后去保存到本地数据库;如果你有好友体系的话,那么需要一个接口请求到好友信息之后,把它存入本地数据库,这就是后续的过程
那么,现在我从第一步给你讲下

1.png


 这张 图片里面的代码就是在application 里面写的,在easeui 初始化之后去 调用 setuserinfo方法,然后就可以设置头像,正如你所说的,你已经知道从数据库去查询数据,然后设置进去;getuserinfo的方法里面 的参数是你当前的环信id, 所以,在存入数据库的时候,你需要去 使用环信ID 查询数据,也就相当于 这图片中的代码 UserApiModel userinfo = UserInfoCacheSvc.getByChatUserName(username);
 这段,然后的 判断是判断数据库 里面有没有这个人的信息,else 里面就是没有,没有的话就是 你所说的要去服务器去 请求,请求 下来之后,再设置进服务器

2.png


 这就是服务器请求 成功之后的获取数据,然后设置进本地数据库,再去递归一下, 整个流程也就可以走通了,具体就是 这样的
在application里easeui初始化之后去设置EaseUI.getInstance().setUserProfileProvider,下载到本地之后去刷新界面,会再去执行getuser的

要回复问题请先登录注册