我想要做的是在一个线程内修改全局 ArrayList 并将这个修改后的 ArrayList 放在我的线程之外。
这是我的代码,它可以工作,但是当我从外部读取我的 ArrayList 时,它具有正确的大小,但是此 ArrayList 中的所有元素都是最后添加的元素,我的意思是如果最后一个元素具有 pollingCode,pollingType,polling Value = 0, all elements在数组中具有相同的值。
有人知道为什么会这样吗?
public abstract class OverlayView extends RelativeLayout {
protected ArrayList<InputEvent> eventList = new ArrayList<InputEvent>();
public void StartEventMonitor() {
Thread b = new Thread(new Runnable() {
public void run() {
InputEvent ie= new InputEvent();
while (m_bMonitorOn) {
for (InputDevice idev:events.m_Devs) {
// Open more devices to see their messages
int pollingEvent = idev.getPollingEvent();
int pollingType=idev.getSuccessfulPollingType();
int pollingCode=idev.getSuccessfulPollingCode();
int pollingValue=idev.getSuccessfulPollingValue();
final String line =/* idev.getName()+
": " +*/ idev.getSuccessfulPollingType()+
" " + idev.getSuccessfulPollingCode() +
" " + idev.getSuccessfulPollingValue() +
"\n";
Log.d(LT, "Event:"+line);
ie.setCode(pollingCode);
ie.setType(pollingType);
ie.setValue(pollingValue);
eventList.add(ie);
}
}
}
}
});
b.start();
}
}