使用DialogFragment代替Dialog,并在onDismiss回调中清除与对话框相关联的任何引用。
示例代码:
public class MyDialogFragment extends DialogFragment {
private View rootView;
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
rootView = inflater.inflate(R.layout.my_dialog_fragment, container, false);
return rootView;
}
@Override
public void onDismiss(DialogInterface dialog) {
super.onDismiss(dialog);
rootView = null;
}
}
使用时,可通过以下方式展示对话框:
MyDialogFragment myDialogFragment = new MyDialogFragment(); myDialogFragment.show(getSupportFragmentManager(), "MyDialogFragment");
在对话框使用完毕后,系统会自动调用onDismiss回调方法,该方法会将根视图的引用设为null,从而实现对与对话框相关联的任何对象的引用解除。