使用迭代的时候,出现了java.lang.IllegalStateException
代码:
for ( TaskInfo info : userTaskInfos ) {
if ( info.isChecked() ) {
am.killBackgroundProcesses(info.getPackageName());
if ( getPackageName().equals(info.getPackageName()) ) {
continue;
}
avaliMem = avaliMem + info.getMemSize();
runningTaskCount = runningTaskCount - 1;
userTaskInfos.remove(info) }
}
原因:迭代的时候,不能操作数据。
解决办法:
List< TaskInfo > removeTasks = new ArrayList<>(); for ( TaskInfo info : userTaskInfos ) {
if ( info.isChecked() ) {
am.killBackgroundProcesses(info.getPackageName());
if ( getPackageName().equals(info.getPackageName()) ) {
continue;
}
avaliMem = avaliMem + info.getMemSize();
runningTaskCount = runningTaskCount - 1;
removeTasks.add(info);
}
}
userTaskInfos.removeAll(removeTasks);