android - Handler 内存泄露问题
PHP中文网
PHP中文网 2017-04-17 17:32:35
0
3
446

请问这种写法会不会导致内存泄露:

       static class MyHandler extends Handler {
        WeakReference<Activity> mWeakReference = null;

        public MyHandler(SampleActivity activity) {
            mWeakReference = new WeakReference<Activity>(activity);
        }

        @Override
        public void handleMessage(Message msg) {
            super.handleMessage(msg);
            SampleActivity activity = (SampleActivity) mWeakReference.get();
            if(activity == null) {
                return;
            } else {
                if(msg.what == 0) {
                    //do something
                }
            }
        }
    }

然后我在onCreate方法中初始化一个MyHandler的对象:

    private MyHandler mHandler = null;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        initViews();
        mHandler = new MyHandler(this);
    }
PHP中文网
PHP中文网

认证0级讲师

모든 응답(3)
伊谢尔伦

아니요, 이는 약한 참조를 사용하는 표준 방법입니다.

刘奇

약한 참조는 필요하지 않습니다. 파괴할 때 메시지를 지우면 됩니다.

Ty80

저자는 Google의 공식 데모와 Lint 팁에 주목해야 합니다

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