활동/프로세스 라이프 사이클 - 디스크에 데이터를 저장/로드 할 때
-
05-07-2019 - |
문제
내 앱은 A와 B의 두 가지 활동으로 만들어졌습니다. 저는이 일련의 단계를 고려하고 있습니다.
- 활동 A가 시작됩니다.
- B [A가 일시 중지되고 B가 실행 중입니다] A는 시작됩니다.
- B 맵 의도를 시작합니다 [A와 B는 이제 모두 일시 정지되었습니다].
이제 사용자는 맵 애플리케이션을 사용하고 있으며 시스템은 더 많은 메모리가 필요하다고 결정합니다. 시스템이 죽일 수 있습니다 단 하나 내 기억에 대한 내 활동에 대해, 아니면 항상 죽일 것인가 모두 "A"활동프로세스" 이러한 상황에서?
두 활동 모두 다음과 같은 일부 정적 데이터를 공유합니다.
class Data {
public static String mName;
public void save() {
// write to file: mName;
}
public void load() {
// mName = read from file;
}
}
ActivityA.mTextView.setText(Data.mName);
ActivityB.mListView.addText(Data.mName);
따라서 내 앱의 활동이 onsaveinstancebundlesate () 호출되면 data.save ()를 호출하여 디스크에 작성합니다. 이제 문제는 Activity의 oncreate () 메소드에서 data.mname == null인지 확인하고 그렇다면 활동이 킬 상태에서 돌아 오는 것으로 가정하고 다시 디스크에서 복원을 시도합니까? 활동 A가 여전히 살아 있거나 살아 있지 않을 수도있는 활동을 고려할 때이 복원이 언제 수행되어야하는지 불분명합니다. - 활동 A가 아직 살아 있지만 B가 살인 상태에서 돌아 오면 상태를 부패하고 싶지 않습니다.
감사
감사
해결책
아마도 가장 좋은 솔루션은 정적 데이터를 서비스로 옮기는 것입니다. 이렇게하면 Android가 Android가 데이터를 사용하여 개별 활동 중 하나를 종료 할 때보다 서비스를 종료 할 때 데이터를 저장하고 복원 할 수 있습니다.
서비스를 사용하지 않으면 (또는 컨텐츠 제공 업체 또는 심지어 응용 프로그램이 눈살을 찌푸 렸지만) 해당 수명주기 직접 관리해야합니다.