2011-10-22 2 views
0

내 안드로이드 게임이 배열 목록의 레벨 레이아웃 데이터를 보유하고 있습니다. 내 레벨 로더를 테스트하는 중 때때로 필자의 레벨이로드되지 않아 검은 색 화면 만 남기고 있다는 것을 알았습니다. 처음에는 재로드가 아닌 텍스처라고 생각했지만, ArrayList와는 별도의 객체를 그려 냄으로써이를 증명했습니다. 다음으로 Log 태그를 사용하여 ArrayList의 크기를 확인합니다. 집을 누르고 다시 응용 프로그램을 열면 로그 태그는 제 데이터가 손실되었다는 것을 의미하는 0의 크기를 반환하기 시작했습니다. 이제는 onPause가 호출 될 때마다 파일에서 내 레벨 데이터를로드하고 싶지 않으므로 ArrayList에있는 데이터를 유지하는 방법이 있습니까?일시 중지시 ArrayList가 보존되지 않습니다

답변

1

문제는 가비지 수집 중 (예 : 일시 중지가 메모리 문제로 인해 파괴 됨)입니다. 활동에 onSaveIntstanceStateonRestoreInstanceState 메소드를 구현하여 문제가 해결되는지 확인하십시오.

Num1은 지적할만한 가치가 있다고 생각하는 의견에 좋은 점을 남겼습니다. 번들에는 소량의 데이터가 포함되어야합니다. ArrayList가 큰 경우 그 이유는 아마도 귀하의 액티비티가 같은 위치에서 가비지 수집되는 이유 일 것입니다. 그렇다면 두 가지 옵션 중 하나가 있습니다. 디스크에 데이터를 명시 적으로 onDestroy 메소드에 저장하십시오 (디스크에 쓰기 만하면됩니다). 또는 작업이 다시 집중 될 때 다시 계산하십시오. 이것은 단지 생각할 좋은 것입니다.

+0

번들에서 다시 가져 오려면해야 할 특별한 앱이 다시 시작될 때 – Jack

+0

업데이트 된 답변보기 –

+0

번들 자체가 어느 시점에 휴지통이 될 것이라고 생각하지만 맞습니다. 그 일이 일어나면 onCreate가 다시 호출 될 것이라고 생각합니까? – Jack

관련 문제