在活动OnDestroy中是否需要删除按钮的事件处理程序并为内存分配设置为null?

时间:2017-09-19 10:47:07

标签: c# android xamarin

目前在活动中包含以下代码

//declaration
public Android.Widget.Button logInButton;

//assigning
logInButton = FindViewById<Android.Widget.Button>(Resource.Id.loginButton);
logInButton.Click += logInButton_Click;

然后在我的OnDestroy方法上执行以下内存分配。

logInButton.Click -= logInButton_Click;

logInButton = null;

GC.Collect();

我在OnDestroy上做的事情真的有必要还是过度杀人?

只是将按钮设置为null并调用垃圾回收器会得到相同的结果吗?

1 个答案:

答案 0 :(得分:2)

你不需要这样做。尤其不适用于没有任何静态上下文引用的点击侦听器到另一项活动(首先是不好的)。除此之外,无法保证始终会调用onDestroy()。你不应该依赖它,并使用其他生命周期钩子做一些取消注册,例如从观察者列表或类似。

简而言之:您不需要为您的案件做到这一点。