我的应用程序架构,很常见:
如果我有实体清单,请解释我,例如
@="\"C:\\Users\\Administrator\\bat\\start.bat\" 1"
图片说明:
目前我做(根据上图):
@Entity(tableName = TABLE_NAME)
class Item constructor(
@PrimaryKey(autoGenerate = false)
var id: Long = 0L,
@TypeConverters(ListToStringConverter::class)
var eventDescription: List<String> = emptyList(),
@TypeConverters(DateConverter::class)
var date: Date = Date(),
var rate: Int ?= null)
来自存储库的getLiveData mLiveData
refreshFromDataBase()
数据库的mLiveData.addSource
- 导致Android视图快速更新的原因LiveData
问题的制定
5步的最佳做法是什么 - 新数据到来的时刻我必须用最新鲜的数据替换旧数据?
目前我正在使用RxJava,Room,Kotlin和我在第3步中使用嵌套的Rx.Single,这是非常难看的spagetti代码。
像
refreshFromNetwork()
丑陋的spagetti代码。
问题
答案 0 :(得分:0)
这取决于您提取的数据是否相似。如果您的新数据通常完全不同,我会删除所有元素,然后只使用以下一种方法插入新元素:
@Insert
public void insertItems(Item... items);
如果您的新数据相似并且您不关心他们的订单,我会将所有新商品与旧商品进行比较,以了解每件商品是否必须更新,插入或删除商品。最后,您调用deleteItems(itemsToDelete),updateItems(itemsToUpdate)和insertItems(itemsToInsert)。这三种方法与上面描述的方法类似,但使用@ Delete,@ Update和@Insert。
如果您关心我推荐的订单,请查看Android Paging Library并创建一个自定义数据源,您可以在其中告知实时数据何时更新其值。一些要开始的链接:this,this,this和this