활동 내에서 안전하게 내부 클래스 사용:
내부 클래스의 수명이 컨테이너 클래스의 수명보다 길어지면 메모리 누수 위험이 발생할 수 있습니다(활동 ) 안드로이드에서. 이는 외부 클래스가 삭제되거나 다시 생성된 후 외부 인스턴스가 내부 인스턴스를 참조할 때 발생할 수 있습니다.
예 1(안전):
이 예에서 익명 내부 클래스는 메서드 범위 내에서 정의되며 활동에 대한 장기간 참조를 유지하지 않습니다. 따라서 누출로부터 안전합니다.
final Dialog dialog = new Dialog(this); // ... dialog.show();
예제 2(위험):
이 예에서는 핸들러로 실행되는 Runnable에 익명 내부 클래스를 사용합니다. Runnable은 Activity의 필드를 참조하므로 Activity보다 오래 지속되고 이에 대한 참조를 유지하여 메모리 누수로 이어질 수 있습니다.
_handlerToDelayDroidMove = new Handler(); _handlerToDelayDroidMove.postDelayed(_droidPlayRunnable, 10000); // ... private Runnable _droidPlayRunnable = new Runnable() { public void run() { _someFieldOfTheActivity.performLongCalculation(); } };
언제 내부 클래스가 외부 클래스보다 오래 지속될 수 있나요?
내부 클래스는 다음과 같은 경우 외부 클래스보다 오래 지속될 수 있습니다.
활동 및 보기 누출:
실행 가능 누출:
모범 사례:
위 내용은 Android 활동에서 내부 클래스를 사용할 때 메모리 누수를 방지하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!