C# Xamarin Android-我的AlertDialog扩展是否会泄漏内存?

C# Xamarin Android-我的AlertDialog扩展是否会泄漏内存?,c#,android,memory-leaks,xamarin.android,C#,Android,Memory Leaks,Xamarin.android,我在Activity上创建了一个简单的扩展来显示警报对话框。我从其他来源了解到,在显示对话框后需要调用Dispose()方法以防止内存泄漏。因为我没有对“alert”的引用,所以无法调用Dispose()。但是,我将代码放在Using语句中,但我不确定这是否有效。另外,我不确定“EventHandler)null”是否也会导致问题 所以,问题是,这段代码会泄漏内存吗?如果是这样的话,你能给我一个写这个扩展的正确方法吗 using DB = System.Diagnostics.Debug; p

我在Activity上创建了一个简单的扩展来显示警报对话框。我从其他来源了解到,在显示对话框后需要调用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);
        }
    }
}
使用DB=System.Diagnostics.Debug;
公共静态类AndroidExtensions
{
公共静态void ShowAlert(此活动、字符串标题、字符串消息、字符串取消按钮){
如果(活动==null){
DB.WriteLine(“ShowAlert():显示警报失败;活动为空”);
返回;
}
试一试{
使用(var builder=new AlertDialog.builder(活动)){
如果(取消按钮!=“”){
builder.SetNegativeButton(CancelButtonTile,(EventHandler)null);
}
使用(var alert=builder.Create()){
如果(标题!=“”){
alert.SetTitle(title);
}
alert.SetMessage(消息);
activity.RunOnUiThread(()=>{
alert.Show();
});
}
}
}捕获(例外情况除外){
DB.WriteLine(“showarter():无法创建警报:“+ex.Message”);
}
}
}