好吧,性能提示中指出:
因此,您应该默认使用增强的 for 循环,但考虑为性能关键的 ArrayList 迭代使用手写的计数循环。
但是查看ioshed 2013应用程序,它被认为是大多数开发人员的示例,ScheduleUpdaterService.java
特别是我可以看到以下内容:
void processPendingScheduleUpdates() {
try {
// Operate on a local copy of the schedule update list so as not to block
// the main thread adding to this list
List<Intent> scheduleUpdates = new ArrayList<Intent>();
synchronized (mScheduleUpdates) {
scheduleUpdates.addAll(mScheduleUpdates);
mScheduleUpdates.clear();
}
SyncHelper syncHelper = new SyncHelper(this);
for (Intent updateIntent : scheduleUpdates) {
String sessionId = updateIntent.getStringExtra(EXTRA_SESSION_ID);
boolean inSchedule = updateIntent.getBooleanExtra(EXTRA_IN_SCHEDULE, false);
LOGI(TAG, "addOrRemoveSessionFromSchedule:"
+ " sessionId=" + sessionId
+ " inSchedule=" + inSchedule);
syncHelper.addOrRemoveSessionFromSchedule(this, sessionId, inSchedule);
}
} catch (IOException e) {
// TODO: do something useful here, like revert the changes locally in the
// content provider to maintain client/server sync
LOGE(TAG, "Error processing schedule update", e);
}
}
请注意有一个增强的 for 循环迭代通过scheduleUpdates
,同时建议避免这种类型的迭代 for ArrayList
。
那是因为从性能的角度来看,应用程序的这一部分不被认为是关键的,还是我不理解某些东西?非常感谢。