recherche

Maison  >  Questions et réponses  >  le corps du texte

android - Handler 内存泄露问题

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

       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中文网2888 Il y a quelques jours476

répondre à tous(3)je répondrai

  • 伊谢尔伦

    伊谢尔伦2017-04-17 17:34:35

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

    répondre
    0
  • 怪我咯

    怪我咯2017-04-17 17:34:35

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

    répondre
    0
  • PHP中文网

    PHP中文网2017-04-17 17:34:35

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

    répondre
    0
  • Annulerrépondre