2014-01-17 5 views
2

이 질문은 너무 일반적으로 보일 수 있습니다. 그리고 나는 많은 게시물을 확인했는데 다른 사이트들도 있습니다. 그러나 실제로 검색하는 것에 대한 적절한 대답을 얻지 못했습니다.자주 사용하는 데이터를 Android에 저장하는 방법은 무엇입니까?

가장 좋은 방법은 무엇입니까? 자주 사용하는 데이터를 저장 하시겠습니까?

여기서 "자주 사용되는 데이터"는 데이터베이스 나 공유 환경 설정에 저장할 가치가없는 모든 데이터를 의미하지 않으며 장치의 높이와 너비, 데이터베이스 경로, 데이터베이스 등과 같이 매번 가져올 수는 없습니다. 이름

일반적으로 모든 변수는 일반적으로 정적 인 별도의 클래스에 저장합니다. 앱이 시작될 때나 기본 활동에서이 데이터를 가져 와서 필요한 곳, 활동 또는 어댑터 또는 파서 클래스 등에있을 때 사용할 수 있습니다.

누구나 정적 데이터 전화가 더 많은 메모리를 필요로 할 때 지워지지만 모든 데이터를 공유 환경 설정에 저장하더라도 공유 환경 설정 또는 데이터가 필요할 때마다 데이터베이스를 가져올 수 없습니다. 그리고이 변수들은 모든 클래스에서 액세스해야합니다.

내 앱에서이 클래스의 이름을 AppConstant로 지정하고 모든 데이터가이 클래스의 정적 변수에 저장되지만 5-6 개의 다른 앱을 열면 모든 데이터가 지워집니다.

그래서 응용 프로그램을 다시 열면 onCreate()에서보기가 다시 생성됩니다. 현재 AppConstant의 필수 데이터가 지워지는지 확인합니다. 공유 환경 설정에서.

하지만 더 나은 대안을 찾고 있습니다. 있어요? 도와주세요.

감사합니다.

+0

당신은 https://github.com/JakeWharton/DiskLruCache에 관심이있을 것입니다. –

답변

0

우선 OS가 메모리가 부족할 때 정적 데이터를 "지우지 않습니다". 이것은 보이는 것처럼 보이지만 그렇지 않습니다. 예를 들어 싱글 톤 클래스를 사용하면 그대로 유지됩니다. 일어나는 일은 OS가 메모리를 확보하기 위해 애플리케이션을 죽이는 것입니다. 다시 시작하면 (약 30 분 이내에 발생한다고 가정) 운영 체제는 상태가 복원되기 전의 상태로 복원됩니다. 기본적으로 앱이 백그라운드로 들어갔을 때 표시되었던 활동을 다시 시작합니다. 알다시피, 활동을 종료하고 쉽게 다시 시작할 수 있습니다 (예 : 기기를 돌릴 때).

그러나 응용 프로그램의 첫 번째 활동에서 싱글 톤을 만들면 OS가 위와 같이 응용 프로그램을 다시 시작할 때 해당 싱글 톤이 표시되지 않으므로 OS가 사용자의 싱글 톤에서 데이터를 "지 웠음"합니다.

정적 데이터가 onCreate()에 있는지 확인하는 해결책은 효과가 있으며 유일한 해결책이라고 생각합니다.

+0

내 활동은 모든 활동을 기본 활동에서 시작하고 내 앱의 첫 번째 활동이 아닌 모든 활동으로 시작하면, 그게 도움이 될까요? 그것은 큰 변화가 될 것이기 때문에 아직 시도하지 않았기 때문에 가치가 있는지 물어 보았습니다. – Ari

+0

BaseActivity 클래스 (예 : onCreate() 메소드)의 모든 정적 데이터를 초기화하고 그것을하기 전에 데이터가 초기화되었는지 확인하십시오, 잘 작동합니다. – Larry

관련 문제