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

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

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

membalas semua(3)
伊谢尔伦

Tidak, ini adalah cara standard untuk menggunakan rujukan yang lemah.

刘奇

Anda tidak memerlukan rujukan yang lemah Hanya kosongkan mesej apabila memusnahkan

Ty80

Pengarang harus memberi perhatian kepada demo rasmi Google dan petua lint

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan