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

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

       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级讲师

répondre à tous(3)
伊谢尔伦

Non, c'est la manière standard d'utiliser des références faibles.

刘奇

Vous n'avez pas besoin de références faibles. Effacez simplement le message lors de la destruction

Ty80

L'auteur doit prêter attention à la démo officielle de Google et aux conseils sur les peluches

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal