android 服务更新ui,android – 如何从后台服务和更新UI更新ViewModel的LiveData

本文探讨了在Android应用中使用ViewModel和LiveData进行数据管理的方式。具体来说,当从Room数据库检索数据未果时,如何通过API调用来异步获取数据,并将结果存储到数据库,最后更新UI。在loadUsers()方法中,建议实现异步操作来避免阻塞主线程,同时确保在服务中获取的数据能正确更新LiveData对象。
摘要由CSDN通过智能技术生成

最近我正在探索谷歌最近推出的Android架构。从

Documentation我发现了这个:

public class MyViewModel extends ViewModel {

private MutableLiveData> users;

public LiveData> getUsers() {

if (users == null) {

users = new MutableLiveData>();

loadUsers();

}

return users;

}

private void loadUsers() {

// do async operation to fetch users

}

}

活动可以按如下方式访问此列表:

public class MyActivity extends AppCompatActivity {

public void onCreate(Bundle savedInstanceState) {

MyViewModel model = ViewModelProviders.of(this).get(MyViewModel.class);

model.getUsers().observe(this, users -> {

// update UI

});

}

}

我的问题是,在loadUsers()函数中我异步获取数据,我将首先检查数据库(Room)中的数据,如果我没有获取数据,我将进行API调用以从中获取数据网络服务器。然后我将获取的数据插入数据库(Room)并根据数据更新UI。建议的方法是什么?

如果我启动服务从loadUsers()方法调用API,我该如何更新MutableLiveData< List< User>>用户来自该服务的变量?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值