【发布时间】:2011-12-21 08:22:02
【问题描述】:
这是我的代码:
private void makeDialog2() {
AlertDialog.Builder about = new AlertDialog.Builder(getContext());
about.setTitle("You Won!");
about.setPositiveButton("Play Again",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface arg0, int arg1) {
Intent playIntent2 = new Intent(getContext(),
PracticePlayActivity.class);
playIntent2.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
getContext().startActivity(playIntent2);
((Activity) getContext()).finish();
}
});
about.setNegativeButton("Exit", new DialogInterface.OnClickListener() {
public void onClick(DialogInterface arg1, int arg2) {
Intent playIntent = new Intent(getContext(),
PlayChooserActivity.class);
playIntent.setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
getContext().startActivity(playIntent);
((Activity) getContext()).finish();
}
});
about.show();
}
当用户输掉游戏并想重试时,会提示此代码。但是,当我按重试超过 4 次时,应用程序崩溃了。我怀疑内存泄漏。在 logcat 中进行一些测试后,我设法发现该活动在重试后仍在运行。
我的计划是通过两件事来解决这个问题。回收我的可绘制对象并作为一个整体结束第一个活动。但是,即使在我调用完成后,第一个活动也没有结束。有什么帮助吗? (到目前为止,在我的代码的其他部分使用 getContext() 已经奏效了)。
编辑:通过结束活动,它会自动销毁变量吗?还是我还需要从 Android 内存中清除位图?有什么想法我可以做到这一点吗?
【问题讨论】: