2011-07-18 3 views
0

내 응용 프로그램을 배경으로두고 다시 깨우면 모든 전역 변수가 지워진다는 것을 의미합니다. 이것은 항상 일어나지 만 드문 경우 일뿐입니다. 메모리 충돌 만있을 수 있습니다. 왜 글로벌 값이 지워졌습니까? 이걸 어떻게 복구 할 수 있니?안드로이드에서의 메모리 문제

+0

어떻게 글로벌 변수를 구현 했습니까? 싱글 톤 클래스 또는 확장 된 응용 프로그램 클래스 또는 다른 방법을 사용하고 있습니까? – Trevor

+0

나는 응용 프로그램을 확장했습니다 .... – Kakey

+0

전역 변수를 정적으로 만들면 문제가 해결 될 수 있습니다. – Hein

답변

0

이것은 Android가 작동하는 방식 일 수 있습니다. 응용 프로그램에서 마지막 작업을 종료했다고해서 응용 프로그램이 메모리에서 지워진다는 의미는 아닙니다. 안드로이드가 애플리케이션에 의해 차지 된 메모리 공간을 필요로하지 않는다면 안드로이드에 의해 반드시 죽을 필요는 없다. 또한 가비지 컬렉터는 각 활동이 파손될 때 반드시 트리거되는 것은 아니라는 자체 수명주기를 가지고 있습니다.

시도해 볼 수 있습니다. Angry Birds를 시작하고 주변에서 놀기 시작하고 "미친 병아리"를 해고하십시오. 진행중인 게임의 중간에 홈 버튼을 누르고 Angry Birds를 다시 시작합니다. 당신이 방금 "집에서"나왔던 바로 그 같은 수준에서 어떻게 끝나는 지 주목하십시오. 홈 버튼을 다시 누르고 다른 응용 프로그램을 시작하십시오 (브라우저는 보통 메모리가 부족합니다). 얼마 후에 Angry Birds를 다시 시작하고 전체 시동 절차를 다시 거쳐야하는 상황에 유의하십시오. 예를 들어 게임 중간에 반드시 이전에 떠난 레벨로 끝나는 것은 아닙니다.

GC 실행 또는 실행 안 함에 관계없이 실제로 응용 프로그램 상태를 유지해야하는 경우 SharedPreferences 또는 SQLite 데이터베이스를 사용해야합니다. 이 개념에 대한 자세한 내용은 여기를 참조하십시오. http://developer.android.com/guide/topics/data/data-storage.html

관련 문제