我在Activity上创建了一个简单的扩展来显示Alert Dialogs。我从其他来源了解到,在显示一个防止内存泄漏的对话框后需要调用Dispose()方法。由于我没有“alert”的引用,我无法调用Dispose()。但是,我将我的代码放在Using语句中,但我不确定这是否有效。作为旁注,我不确定“EventHandler”null是否也可能导致问题。
所以,问题是,这段代码会泄漏内存吗?如果是这样,你能告诉我一个写这个扩展的正确方法吗?
using DB = System.Diagnostics.Debug;
public static class AndroidExtensions
{
public static void ShowAlert(this Activity activity, string title, string message, string cancelButtonTitle) {
if (activity == null) {
DB.WriteLine("ShowAlert() : Failure showing alert; activity is null");
return;
}
try {
using (var builder = new AlertDialog.Builder (activity)) {
if (cancelButtonTitle != "") {
builder.SetNegativeButton (cancelButtonTitle, (EventHandler<DialogClickEventArgs>)null);
}
using (var alert = builder.Create ()) {
if (title != "") {
alert.SetTitle (title);
}
alert.SetMessage (message);
activity.RunOnUiThread(()=> {
alert.Show ();
});
}
}
} catch(Exception ex) {
DB.WriteLine ("ShowAlert() : Couldn't create alert : " + ex.Message);
}
}
}