안드로이드 개발 질문/답변
(글 수 45,052)
리스트에서 사용하는 이미지를 스택에서 관리하는 소스의 일부분인데
java.lang.ArrayIndexOutOfBoundsException가 계속 발생됩니다.
두군데에서 계속 발생하는데
아래 빨간색으로 된곳에서 발생합니다.
어떤 오류인지는 알겠지만
원인을 모르겠네요ㅠ
제가 테스트하는 기기에서는 발생하지 않지만, 몇몇기기에서 계속
발생하고있고요ㅠㅠ
이오류는
photosToLoad.remove(j);
java.lang.ArrayIndexOutOfBoundsException: Array index out of range: 0
인덱스가 0이라고 계속 뜨네요ㅠ
private void queuePhoto(String url, Activity activity, ImageView imageView) {
photosQueue.Clean(imageView);
PhotoToLoad p=new PhotoToLoad(url, imageView);
synchronized(photosQueue.photosToLoad){
photosQueue.photosToLoad.push(p);
photosQueue.photosToLoad.notifyAll();
}
if(photoLoaderThread.getState()==Thread.State.NEW)
photoLoaderThread.start();
}
private class PhotosQueue {
private Stack<PhotoToLoad> photosToLoad=new Stack<PhotoToLoad>();
public void Clean(ImageView image)
{
if(photosToLoad != null) {
for(int j=0 ;j<photosToLoad.size();){
if(photosToLoad.get(j).imageView==image)
photosToLoad.remove(j);
else
++j;
}
}
}
}




당연히 그렇게 나오죠....
하나를 빼면 index가 다시 매겨집니다.
그런데 j는 한발짝씩 앞으로 가고 있죠...
언젠간 j가 전체 갯수이상이 되겠죠...
get(j)와 remove(j)를 get(0)과 remove(0)으로 바꾸고 돌리면 잘 될겁니다.