Bug:java.lang.IllegalStateException

时间:2025-05-01 20:33:19

使用迭代的时候,出现了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);