2012-11-02 5 views
1

나는 이것에 난처 해했다. 나는 메모리 누수를 피하기 위해 안드로이드에 새로운 청취자를 어떻게 적절하게 생성하는지 파악할 수 없다. 내가 외부 클래스 변수에 액세스해야하기 때문에 외부 클래스에 대한 SoftReference가있는 정적 내부 클래스를 사용하겠습니까? 아니면 다음과 같이해야합니다 :내부 클래스와 메모리 누수 피하기 android

setScrollListener(new ScrollListner { 

//methods here. 

}); 
+0

왜 내부 클래스가 메모리 누수입니까? –

+0

어떤 내부 클래스? 정적 하나 또는 내가 제공 한 예? – HAxxor

+0

제대로 사용하면 어떤 경우에도 메모리 누수가되지 않습니다. –

답변

2

메모리 누수는 Scrolllistener가 사용자의 활동 외부에서 참조 된 경우에만 발생해야합니다.

코드에서 scrolllistener를 그대로 사용하면 리스너는 익명의 클래스이므로 Activity에 대한 참조를 유지합니다. 그러나 청취자에 대한 유일한 참조는이 활동의 ​​참조 인보기에서 나옵니다. 활동이 완료되면 가비지 컬렉터가 전체 메모리를 한 번에 정리할 수 있습니다.

+0

나는 지금 당신이 말하는 것을보고있다. 약 300 개의 항목 목록을로드 할 때 OOM 오류가 계속 발생합니다. 나는 무엇이 잘못되었는지 확신 할 수 없다. 뷰어 홀더 패턴을 사용하고 있으며 이미지가 없습니다. 내 정적이 아닌 내부 클래스라고 생각했습니다. 나는 이것에 아주 붙어있다. – HAxxor

+0

어쩌면 그것은 항목 자체의 목록이며, 다른 질문에 더 많은 코드를 게시 할 수 있습니다. 아마도 우리는 당신을 도울 수 있습니다. – Janusz