본문 바로가기
  • _^**_
무근본 IT 지식 공유/무근본 안드로이드(Android)

[무근본 안드로이드 사진첩] 리스트 뷰를 켤 때마다 같은 목록이 추가되는 현상..

by 크리드로얄워터 2023. 3. 26.
반응형

[문제점]

내가 만든 사진첩은 리스트 뷰로 이루어져 있다.

사진첩을 처음 실행시킬 때에는 서버에 있는 사진(3개라고 하자) 3개만 리스트 뷰에 잘 나타난다.

그런데 문제는 이를 다시 실행시켰을 때(액티비티가 완전히 꺼지지 않은 상태에서....task kill을 했다가 다시 실행시키면 문제는 없다.) 

사진을 도중에 추가하지 않았음에도 리스트가 마치 복제...번식... 한 듯이 기존에 있던 3개가 한 번 더 추가되어 6개로 늘어나있다.

같은 것이 또 쌓인 모양이 되는데....

이클립스로 다시 컴파일하면 리스트가 원래대로 3개로 되는 것을 확인할 수 있었다.

문제는 간단했다.

 

액티비티인 SnowPhotoViewer에다가 이미지 경로(외 여러가지)를 담는 ArrayList인 alist를 전역으로 선언해놨기 때문에 생긴 문제였다.

그 밑에 onCreate 부분에서 이런식으로

 

 

서버에서 받아온 이미지를 alist add 하는 형식으로 되어있었다.

따라서 액티비티가 완전히 꺼지지 않은 폰에서 다시 액티비티를 누르면 alist는 기존 데이터 그대로 남아있는 상태고,

onCreate가 다시 실행되기 때문에 이미 생성되어있는 alist에 같은 데이터(서버 이미지 경로)가 추가적으로 쌓이게 된 것이다.

 

이를 해결하기 위해 onCreate 할 때마다( 액티비티가 꺼지지 않은 상태에서 어플을 다시 누를 때마다 ) alist를 다시 선언해 주는 방식(Reset 개념)으로 변경하였더니 잘 된다.

즉 onCreate 안에다가 alist를 선언해 주었다. (물론 public static은 빼고 .. ㅋㅋ 무슨 정신으로 그랬는지는 모르겠다.)

 

 

 

 

 

 

그런데 재미있는 건 이전에 내가 사용하던 옵티머스 LTE에서 이 어플을 돌렸을 때에는 문제가 없었다는 점..

지금은 갤럭시 S3를 쓰고 있는데...

두 개의 기기 사이에 어플 구동 방식이 살짝 다른가보다..

짐작하기로는 갤럭시 S3는 실행시키다가 끈 어플의 액티비티를 백그라운드에 그대로 놔두는 반면,

옵티머스 LTE는 끄면 완전히 액티비티까지 종료시키나보다.....

근데 추측일 뿐...

 

반응형

댓글