【发布时间】:2018-11-07 07:33:19
【问题描述】:
每次我尝试显示 DialogFragment 时都会出现内存泄漏。
这是我的测试对话框(取自 android 开发者页面)的样子:
public class TestDialog extends DialogFragment {
public static TestDialog newInstance(int title) {
TestDialog frag = new TestDialog();
Bundle args = new Bundle();
args.putInt("title", title);
frag.setArguments(args);
return frag;
}
@Override
public Dialog onCreateDialog(Bundle savedInstanceState) {
int title = getArguments().getInt("title");
return new AlertDialog.Builder(getActivity())
.setIcon(R.drawable.ic_action_about)
.setTitle(title)
.setPositiveButton(R.string.ok,
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
//((FragmentAlertDialog)getActivity()).doPositiveClick();
}
}
)
.setNegativeButton(R.string.cancel,
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog, int whichButton) {
//((FragmentAlertDialog)getActivity()).doNegativeClick();
}
}
)
.create();
}
}
我使用以下在按钮按下时执行的代码启动它:
DialogFragment newFragment = TestDialog.newInstance(R.string.company_title);
newFragment.show(getFragmentManager(), "dialog");
如何解决此泄漏(或至少隐藏它,因为 canaryleak 对所有这些通知都感到非常烦人)?
【问题讨论】:
-
代码是否驻留在您发布的可运行文件中?如果是这样,我认为您可以忽略这一点。
-
我不确定我是否遵循。这只是按钮上的普通 setOnClickListener。
标签: android android-dialogfragment leakcanary