Android RecyclerView重新加载活动以更新数据与notifyDataSetChanged效率?

时间:2019-07-12 04:22:43

标签: android performance android-recyclerview

我有一个活动,在onCreate中调用一个API,并用产品名称,当前库存和一个EditText填充RecyclerView,以为每个产品插入一个值。

然后您可以点击活动顶部的添加或减少按钮,所有具有插入值的产品都会通过API通过给定值在数据库中更新其库存。

我不会将屏幕上的库存值传递给API(因为与此同时,另一个用户可能已经对其进行了更改),我不会传递插入的值,产品ID以及是否增加/减少数据库值。

当前,在发送更新请求并成功后,我调用finish()并重新加载活动以获取更新的数据。

我想知道是否最好在更新请求之后对数据进行API调用,然后仅更新RecyclerView,它几乎是onCreate的重复代码,但会阻止重新加载活动。

有人对这个活动与重新加载活动的效率有任何见解吗?似乎重装将是效率更低的选择,但我不太确定。

2 个答案:

答案 0 :(得分:2)

假设您的onCreate方法中具有以下内容:

onCreate() {
  setContentView(xx);
  callApiGetDataAndSetDataToRecyclerView();
}

如果是这样,请尝试像下面的after I send the update request and it is successful那样更改代码:

doAfterUpdateRequestSuccessful() {
  List<Object> latestData = callApiGetData() // this should not be in the ui thread, I believe you are clear about it but just want to repeat
  recyclerViewAdapter.setData(latestData);
  recyclerViewAdapter.notifyDataSetChanged();
}

然后,您的回收站视图将更新为最新数据。

就像@ADM的评论finishrecreate一样,该活动绝不是更新回收者视图的解决方案,用户体验将非常糟糕。

答案 1 :(得分:0)

重新加载活动不是很有效。相反,您应该将获取数据和呈现逻辑移动到一个独立的方法,并在每次要刷新呈现的数据时从onCreate调用此方法。