java – Android – 更新arraylist时的线程安全性

我的Activity包含一个BroadcastReceiver和一个AsyncTask,它们都更新了一个ArrayList(经常).我知道AsyncTask在后台运行,并且BroadcastReceiver和AsyncTask线程可能同时更新ArrayList.我怎样才能让它们成为线程安全的呢?

编辑:正如亚历山大提到的,除非你明确地实现它,否则在主线程上运行BroadcastReceiver.

最佳答案 AsyncTask作为单独的线程运行.

BroadcastReceiver通常在主线程上运行,除非你在’registerReceiver’中另外指定(参见这里:
http://developer.android.com/reference/android/content/Context.html#registerReceiver(android.content.BroadcastReceiver,%20android.content.IntentFilter,%20java.lang.String,%20android.os.Handler)

)

您可以使用Budius编写的Vector,也可以使用synchronized块包装对ArrayList的所有访问:

synchronized(myList){
    myList.add(itemToAdd);
}
点赞