android - 静态方法中可以持有Activity对象吗
PHP中文网
PHP中文网 2017-04-17 17:29:34
0
7
703

静态方法中可以持有Activity对象吗,这么做不好吧
GC的销毁Activity时会不会因为静态方法持有引用而销毁不了啊

PHP中文网
PHP中文网

认证0级讲师

모든 응답(7)
大家讲道理

메모리 누수에 관한 추천 기사
Android 메모리 누수 - 전체 분석 및 솔루션

巴扎黑

다음 두 가지 상황을 살펴보면 질문을 이해할 수 있을 것입니다.

으아아아 으아아아

A의 정적 메서드 a가 Activity 개체를 전달한 다음 메서드가 종료되고 Activity에서 참조하는 활동의 수명 주기가 종료되므로 문제가 발생하지 않습니다.

B의 정적 메서드 b는 Activity 개체를 전달하고 B의 멤버 변수 mActivity는 이 참조를 받습니다. 이 정적 멤버 변수는 프로세스에 항상 존재하므로 메모리 누수가 발생합니다.

洪涛

메서드 내의 변수는 모두 지역 변수이며 메서드가 완료된 후에는 유지되지 않습니다.

黄舟

물론 가능합니다. 아무 문제가 없습니다

巴扎黑

위 답변에 덧붙여, 클래스 B가 정적 내부 클래스이고 활동에 대한 참조를 보유해야 하는 경우 약한 참조를 고려할 수 있습니다.

으아아아
巴扎黑

위층에 약한 참조 방식을 제안하고, Handler의 정식 사용도 같은 방식입니다

Peter_Zhu

말이 된다면 당연히 이렇게 사용할 수도 있겠네요

하지만! ! ! 위에서 언급한 것처럼 메모리 누수가 발생하므로 하지 마세요

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿