我想这是个蹩脚的问题,我连一个恰当的题目都编不出来!以下是我在安卓系统下尝试做的事情:
public void onCreate(Bundle savedInstance) {
...
AskFilename ask = new AskFilename();
...
}
这里,AskFilename
类将提供一个用户界面,让用户输入文件名。但是,一旦onCreate()
方法返回,ask
对象就会超出范围。因此,这意味着将不再引用ask
(假设在AskFilename
类内部,我没有将其this
指针分配给任何其他变量),因此GC迟早会“收集”它。当这种情况发生时,如果用户没有确定对话框,AskFilename
中的代码已经不可用,因此系统将崩溃。我的理解正确吗?
(我想不出一种方法来体验这个想法,因为我不知道如何让GC完成它的工作。似乎GC只有在它想做的时候才会加入!有办法让它完成它的任务吗?)
如果以上是正确的,那么新建UI相关对象的正确方法是什么?我知道我可以使AskFilename
内部的每个值都是静态的,或者我可以使ask成为静态可用的,并在完成后将其分配为null。但是还有别的办法吗?或者,这个想法本身一开始就很糟糕?
(如果AskFilename是“活动”的“内部”类,会有什么不同吗?比如MyActivite.AskFilename。)
提前谢谢。