활동/프로세스 라이프 사이클 - 디스크에 데이터를 저장/로드 할 때

StackOverflow https://stackoverflow.com/questions/1801500

  •  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가 데이터를 사용하여 개별 활동 중 하나를 종료 할 때보다 서비스를 종료 할 때 데이터를 저장하고 복원 할 수 있습니다.

서비스를 사용하지 않으면 (또는 컨텐츠 제공 업체 또는 심지어 응용 프로그램이 눈살을 찌푸 렸지만) 해당 수명주기 직접 관리해야합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top