【发布时间】:2014-03-30 17:54:58
【问题描述】:
我正在制作 Android 应用程序。我有一门课,我每 30 秒从数据库中获得一些订单,如下所示:
public class OrderScheduler {
private List<OrderMain> orders = Collections.synchronizedList(
new ArrayList<OrderMain>());
...
private void main() {
service.scheduleAtFixedRate(new Runnable() {
public void run() {
orders = getStuff();
}
}, 0, 30, TimeUnit.SECONDS);
}
}
然后有一个 Activity 类,我在其中使用上面列表中的对象创建 ListView,如下所示:
newOrdersListView = (ListView) findViewById(R.id.newOrdersListView);
OrderScheduler os = OrderScheduler.getInstance();
List<OrderMain> newOrders = (os.getOrders() == null) ?
new ArrayList<OrderMain>() : os.getOrders();
ArrayAdapter<OrderMain> listAdapter = new ArrayAdapter<OrderMain>(
this, R.layout.listview_row, newOrders);
newOrdersListView.setAdapter(listAdapter);
我在迭代同步列表时读取了 javadoc,我需要对其进行同步。
我的问题是当我单击此列表视图的某些项目时,onItemClick 方法是否需要在同步块中?我认为当我从 listview 中选择一些项目时,它基本上需要遍历 newOrders 列表。
顺便说一句,现在我不同步这个监听器方法,它似乎工作。在此应用程序中,我创建的线程数不超过 OrderScheduler 中的线程数。 感谢您的帮助。
【问题讨论】:
标签: java android multithreading listview