语境
处理RecyclerView每个都有标签和值TextViews以及开始的项目Button。
目标
Button按下开始时开始并继续增加一个值
必须可以通过其按钮单独启动每个项目的值
一旦开始,多个值必须能够并行连续递增
问题
UI(值TextView、点击Button等)在 2 个或更多值开始增加后变慢。不确定如何处理线程(试过HandlerThread/ runOnUiThread,目前使用为每个单独的线程MyValue对象),看MyValue.start()在代码的下方。
如何在RecyclerView不减慢 UI 的情况下在更新时并行连续递增单个值?
到目前为止已经尝试过什么
使用HandlerThread和runOnUiThread
Thread为每个MyValue对象单独使用
考虑到AsyncTask但在未来,“增加多个值”行为可能需要在独立于后台运行Activity(即,仅Activity在前台时更新 GUI ),因此该行为可能会转移到BoundService
可以使用 中的值LiveData来RecyclerView观察和更新项目MyValue,但是,不确定 LiveData 如何使用MyValue和ValuesAdapter
代码
主要活动
public class MainActivity extends AppCompatActivity {
ArrayList<MyValue> mValues;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
RecyclerView recyclerView = findViewById(R.id.recycler_view);
recyclerView.setHasFixedSize(true);
LinearLayoutManager linearLayoutManager = new LinearLayoutManager(this);
recyclerView.setLayoutManager(linearLayoutManager);
mValues = new ArrayList<>();
mValues.add(new MyValue("value 1"));
mValues.add(new MyValue("value 2"));
mValues.add(new MyValue("value 3"));
ValuesAdapter valuesAdapter = new ValuesAdapter(mValues);
recyclerView.setAdapter(valuesAdapter);
}
}
相关分类