为了账号安全,请及时绑定邮箱和手机立即绑定

android 使用了runOnUiThread 还是报错NetworkOnMainThreadException,代码如下:

android 使用了runOnUiThread 还是报错NetworkOnMainThreadException,代码如下:

慕侠2389804 2019-02-22 16:30:20
private EaseUser getUserInfo(final String username){ // To get instance of EaseUser, here we get it from the user list in memory // You'd better cache it if you get it from your server String curUser = EMClient.getInstance().getCurrentUser(); if(username==null||curUser==null)return null; EaseUser user = null; /* if(username.equals(curUser)) return getUserProfileManager().getCurrentUserInfo();*/ user = getContactList().get(username); if(user == null && getRobotList() != null){ user = getRobotList().get(username); } // if user is not in your contacts, set inital letter for him/her if(user == null){ user = new EaseUser(username); EaseCommonUtils.setUserInitialLetter(user); final UserBean.Account[] account = {null}; MyApplication.getInstance().getCurrentActivity().runOnUiThread(new Runnable() { public void run() { account[0] = AccountLoader.getUser(username); } }); if(account[0] !=null) { user = new EaseUser(account[0].getId()); user.setNickname(account[0].getNickname()); user.setAvatar(account[0].getAvatar()); userDao.saveContact(user); } } return user; }
查看完整描述

5 回答

?
一只萌萌小番薯

TA贡献1795条经验 获得超7个赞

新开一个线程使用join等待结束处理了!
Thread th = new Thread(new Runnable(){
....
});
th.join();

查看完整回答
反对 回复 2019-03-01
?
Cats萌萌

TA贡献1805条经验 获得超9个赞

我觉得你贴出的代码没法表现问题所在,其次使用了runOnUiThread 还是报错NetworkOnMainThreadException.

本来这个错误的意思就是在UI线程访问网络报错的,你把相关逻辑放到runOnUiThread还是UI线程,一样也会报错。根本没解决问题

查看完整回答
反对 回复 2019-03-01
?
牧羊人nacy

TA贡献1862条经验 获得超7个赞

Rxjava 完美解決該問題。

查看完整回答
反对 回复 2019-03-01
?
炎炎设计

TA贡献1808条经验 获得超4个赞

你的getUserInfo()是否是在UI线程调用?

查看完整回答
反对 回复 2019-03-01
  • 5 回答
  • 0 关注
  • 647 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信