2014-09-29 2 views
0

내 응용 프로그램에 5 분마다 호출되도록 예정된 intentService가 있습니다. 그 서비스에서 나는 app (Strings, int ..)의 나머지 부분과 값을 공유하고 있습니다. 나는 이러한 값을 유지하기 위해 Singleton을 사용하고있다. 이것은 대부분의 경우 잘 작동합니다.Android, 백그라운드 서비스 용 싱글 톤 값 유지

그러나 때로는 (적어도 볼 수있는) 이유가 없기 때문에 값이 손실되고 그로 인해 앱이 다운됩니다. 싱글 톤은 그 상태를 잃어 버리는 것 같습니다.

Android에서 불필요하다고 판단되는 정보를 삭제할 수 있다고 읽었습니다. 이러한 이유로 내 활동에서 앱이 유휴 상태가 될 때 값을 번들에 저장했습니다 (onPause 및 onResume).

이제 intentService에서 문제가 달라집니다. 타이머를 사용하여 5 분마다 서비스를 호출합니다.

싱글 톤 값을 유지하는 방법이 필요합니다. 데이터베이스에 저장하지 않을 것입니다 (매 5 분마다이 작업을 수행하는 것은 힘든 작업으로 보입니다). 더 간단한 방법이 있어야합니다.

분명히 밝혀지기를 바랍니다. 통찰력에 감사드립니다.

답변

1

귀하의 응용 프로그램에서 싱글 톤 클래스를 사용하는 경우, 안드로이드가 메모리가 낮은 시나리오에서 응용 프로그램 인스턴스를 종료시킬 수 있습니다. 그래서 싱글 톤 클래스 객체도 잃을 수 있습니다. 이 대신에 사용해야하는 것이 좋습니다 SharedPreferences

+0

SharedPreference를 사용하면 정보가 손실되지 않도록 할 수 있습니까? 나중에 SharedPreference를 변경할 수 있습니까? – user1851212

+0

예, 귀하의 정보는 응용 프로그램이 장치 또는 캐시에서 제거되지 않을 때까지 계속 저장됩니다 (혼란 스럽습니다). 그리고 공유 환경 설정 데이터를 수정할 수 있습니다. 키 - 값 쌍을 사용하는지도처럼 작동합니다. 그냥 응용 프로그램 데이터 디렉토리에있는 일부 파일에 저장됩니다. – user370305

1

프로세스가 시스템에 의해 종료되면 메모리의 모든 데이터가 손실됩니다. 언제나 당신의 프로세스가 살아 있다는 것에 의지 할 수 없으므로 그 데이터를 싱글 톤에 보관할 수 있습니다. SQLite database에 해당 데이터를 저장하거나 다음 번에 사용자 지정 부분을 초기화 할 때 읽을 수있는 shared preferences 또는 save it to a file에 저장하십시오.