报错原因是我在子线程中调用了LiveData的observe。LiveData.observe是活动在主线程来观察数据,更新UI的。
解决:
new Handler(Looper.getMainLooper()).post(new Runnable() {
@Override
public void run() {
api.getUserInfo(userId).observe(MainActivity.this, new Observer<Result<UserBean>>() {
@Override
public void onChanged(Result<UserBean> userBeanResult) {
...
}
});
}
});
使用 new Handler(Looper.getMainLooper()).post(new Runnable(){});让LiveData.observe在主线程运行就好了。