2012-03-14 2 views
0

몇 가지 맵을 사용하여 내 활동의 데이터를 캐시합니다. 그리고 활동으로 다시 조작하면지도가 GC에 의해 수집되어 널 포인트 예외가 발생합니다. 그래서 나는 그것을 피하기 위해이지도를 저장해야합니다. 문제는 어떻게해야합니까? pacerable을 구현하고이 데이터를 번들에 넣으십시오. 이 문제를 우아하게 소홀히하는 다른 방법이 있습니까? 도움을 주셔서 감사합니다.onPause() 및 onSaveInstanceState() 함수를 사용하여 상태를 저장합니다.

답변

4

진정한 캐시 인 경우 필요에 따라 원본 소스에서 데이터를 다시로드하기 만하면됩니다. 이것이 바로 "캐시 (cache)"입니다. 짧은 시간 동안 액세스를 최적화하고 다른 곳 (예 : 로컬 파일)이 백업 저장소가됩니다.

캐시의 수명을 선택할 수 있습니다. 지금은 단일 액티비티의 일부인 것처럼 보입니다. 즉, 액티비티가 삭제되면 캐시가 삭제됩니다. 그것은 적절할 수도 있고 그렇지 않을 수도 있습니다. 또한 일부 클래스의 정적 데이터 멤버로 만들어 전체 프로세스 수명 동안 캐시를 라이브로 만들 수도 있습니다. 매우이되어야 메모리 누수가 발생하지 않으므로 힙 공간이 부족해질 수 있습니다. 그러나이 경우 캐시는 프로세스가 수행하는 한 오래 지속됩니다.

하지만 결국 프로세스가 종료됩니다 (예 : 사용자가 HOME을 누르고 상당한 기간 동안 애플리케이션으로 돌아 가지 않음). 따라서 필요에 따라 원래 소스에서 캐시를 다시로드 할 수 있어야합니다.

관련 문제