【Bug修復】內存泄漏--anonymous impleation of android.arch.lifecycle.Observer leaks

今天搞一個自定義DialogFragment,使用了architecture架構,這裏出現了內存泄漏,上代碼:

MutableLiveData<List<String>> mlist = new MutableLiveData<>();
 mlist.observe((LifecycleOwner) getActivity(), new Observer<List<String>>() {
            @Override
            public void onChanged(@Nullable List<String> strings) {
                adapter.replace(strings);
            }
        });

報的是實現lifecycle接口的類內存泄漏,也就是宿主Activity了,我在這裏使用了MutableLiveData來處理list發生的變化,這裏需要在當前頁面被finish的時候把對宿主Activity的引用釋放掉,所以需要加上這麼一行代碼

 @Override
    public void onDestroy() {
        if (disposable != null) {
            //此處可以忽略 
            disposable.dispose();
        }
        if(mlist != null){
            mlist.removeObservers((LifecycleOwner) getActivity());
        }
        super.onDestroy();
    }
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章