【发布时间】:2019-08-18 20:46:51
【问题描述】:
方法A(常规方法):
- 我们从 API 获取 JsonArray
- 迭代 JsonArray(在 for 循环内)并将 JsonArray 中的值传递给模型类的对象(Getter 和 Setter),并将模型类的对象添加到 ArrayList
- 将该 ArrayList 传递给 recyclerAdapter
- 在 recyclerAdapter 的 onBindViewHolder 方法中迭代 ArrayList
- 并在 onBindViewHolder 方法中为 textView、imageView 等设置值
方法B:
- 我们从 API 获取 JsonArray
- 将整个 JsonArray 传递给 recyclerAdapter
-
在 onBindViewHolder 中迭代 jsonArray(不使用 ArrayList)并将值直接设置为 textViews、imageViews 等,如下所示
@Override public void onBindViewHolder(Holder holder, int i) { try { holder.textView.setText(jsonArray.getJSONObject(i).getString("textKey")); } catch (JSONException e) { e.printStackTrace(); } }
请问,由于我们没有使用模型类和 ArrayList,所以我使用第二种方法时会有任何性能改进。
性能会下降还是保持不变。
我不关心可读性,我唯一关心的是性能。
注意:- using try catch multiple times has no effect on performance 所以我们可以忽略它。
【问题讨论】:
-
真正了解的唯一方法是进行基准测试。然后你就会知道它在你的特定条件下是如何工作的。