是否会从片段为Activity分配事件处理程序创建循环引用?

时间:2015-02-18 06:51:46

标签: android memory android-fragments xamarin xamarin.android

在我的Xamarin.Android(Monodroid)应用程序中,我有一个活动显示活动菜单中的多个片段。我想在我的活动中将某些方法作为事件处理程序分配给以下模式中的片段中的某些操作。

 public class MainActivity : FragmentActivity
 {
   protected override void OnCreate(Bundle bundle)
    {
        base.OnCreate(bundle);

        // Set our view from the "main" layout resource
        SetContentView(Resource.Layout.Main);
        SupportFragmentManager.BeginTransaction().Replace(Resource.Id.mainFrame,new Accountactivity()).Commit();
        SupportFragmentManager.ExecutePendingTransactions();
    }
   void MenuClicked(object sender, EventArgs e)
    {
    }
 }
 public class AccountFragment : Android.Support.V4.App.Fragment
 {
    public override void OnResume ()
    {
        base.OnResume ();
        accountMenu.Click += ((MainActivity)Activity).MenuAccountClicked;
    }
 }

此模式是否会为我的活动创建一个循环引用并停止垃圾收集器收集片段?

1 个答案:

答案 0 :(得分:3)

对于此模式,您应该使用onAttachonDetach来分配和删除事件处理程序。

onAttach中分配事件处理程序,并在onDetach中删除它。