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