tof*_*for 2 android android-room android-architecture-components
目前,我正在研究Android应用架构,我无法理解Github Repo Sample中的一件事。我们可以决定使用速率限制器或null检查来获取新数据,但是在这种情况下,我们只是将新值插入数据库中,而不会从数据库中删除旧值。例如,如果数据库中的旧结果之一从服务器中删除(用户删除的存储库)?它将仍在数据库中吗?我们如何消除这些价值?我是否缺少某些东西,或者这是未处理的案件?
小智 5
我想我有一个优化且更简单的解决方案。请帮助使它更简单!
// Dao class
@Dao
public interface UserDao {
// ...
@Insert(onConflict = OnConflictStrategy.REPLACE)
void insertAll(List<User> users);
@Query("DELETE FROM User WHERE User.id NOT IN(:lstIDUsers)")
void deleteOldUsers(List<Integer> lstIDUsers);
}
Run Code Online (Sandbox Code Playgroud)
//调用Dao的文件-示例:存储库类)
// First, convert and add all Json data to lstUsers
// Second, add only Json primary key elements
// from lstUsers to a new list lstIDUsers
userDao.insertAll(lstUsers);
userDao.deleteOldUsers(lstIDUsers);
Run Code Online (Sandbox Code Playgroud)
这两个命令首先使用OnConflictStrategy.REPLACE插入所有元素,然后仅删除从远程或本地DB中删除的旧元素。
| 归档时间: |
|
| 查看次数: |
2034 次 |
| 最近记录: |