2

싱글 톤은 앱의 "명백한 수명주기"에서 여러 시간이 파괴되어 다시 생성 될 수 있기 때문에 Android 앱에 지속적 데이터를 보유 할 것으로 예상되지 않습니다. 이것은 그 자체로 나에게 문제가되지 않습니다. 문제는 응용 프로그램이이 destroy -> create 프로세스를 통과 할 때 정확히 발생합니다.Android 액티비티 라이프 사이클 및 싱글 톤 및 상호 참조 지속 시간 (메모리 누수)

나는 새로운 프로세스에서 응용 프로그램이 다시 만들어 질 것이라는 포럼을 읽었으며 모든 메모리 관리가 포함 된 이전 프로세스가 파괴 될 것이라고 생각합니다. 그러나 이것은 상호 참조가있는 노드로 모든 싱글 톤과 논리 트리를 정리하는 것은 개발자의 몫이라는 것을 의미합니까? 아니면 프로세스를 파괴하면 모든 것이 자동으로 정리됩니까? 나는 경험 많은 자바 개발자가 아니기 때문에 GC에 대해 아직 많이 불분명하다.

내가 작업중인 특정 프로젝트는 기기의 가동 시간 내내 단 하나의 앱만 실행합니다. 데스크톱 용어로는 싱글 톤을 통한 메모리 누출의 위험이 없습니다. 응용 프로그램이 장치 종료시 종료되고 전체 프로세스에 동일하게 적용되기 때문입니다. 그러나 안드로이드는 더 어렵게 만듭니다.

에뮬레이터를 사용하여 안드로이드를위한 좋은 메모리 누수 탐지기는 무엇입니까?

+1

메모리 누수 탐지 도구 : http://www.eclipse.org/mat/이 google io 비디오 : https : // www. .youtube.com/watch? v = _CruQY55HOk – Entreco

+0

감사합니다! 나는 그것을 들여다 볼 것이다! – Rene

+0

메모리 누수에 대해서도이 답변을 확인할 수 있습니다. http://stackoverflow.com/questions/3714394/how-to-find-memory-leak-class-activity-in-android/14775184#14775184 – rekire

답변

3

기본적으로 UI 요소에 대한 참조를 유지하지 않아야합니다. 해당 UI 요소는 파괴 될 수있는 활동 컨텍스트에 바인딩됩니다.

실제로 적용하기 위해 Application 클래스를 확장하는 것보다 singelton이 필요한 경우. 이 인스턴스는 활동이 닫히거나 회전 할 때 파괴되지 않습니다.

또한 코드에서 해당 이벤트를 처리 할 수 ​​있음을 알고 있어야합니다. 즉, 활동이 다시 시작되지 않아야합니다. IMHO는 행동을 재개하는 데 거의 아무런 의미가 없습니다. 이를 구현하려면 configChanges attribute을 매니페스트에 추가해야합니다. 나는이 설정을 개인적으로 사용한다 :

+0

감사합니다. 어플리케이션 클래스! 나는 확실히 그걸 살펴볼 것입니다. 그러나 안드로이드 워드 프로세서를 읽으면서 필자는 액티비티가 멈추고 다시 시작될 때 개발자에게 달려 있다는 것을 이해했다. 안드로이드 운영 체제가 당신을 위해 그 결정을 내립니다. – Rene

+0

음, 원래 질문은 활동 재시작이 모든 것을 정리할 것인지 또는 직접해야하는지 여부입니다. 그러나 팁이 좋은 해결 방법으로 이어지면 귀하의 게시물을 정답으로 만들 것입니다. 나는 그것을 먼저 시도해야한다. – Rene