Android活动保存在内存中,没有监听器或引用

时间:2015-02-17 09:36:32

标签: android android-activity memory-leaks heap android-actionbaractivity

我有2个活动(比方说A和B)。当我按下A上的按钮时,我通过StartActivity启动B的实例。当我回到A,并再次按下按钮时,B仍在内存中,它将加载到旧的B实例中。这种情况一直持续到内存不足,旧的活动没有被垃圾收集器清理..

我的活动没有监听器或可以将其保留在内存中的东西。我打电话给完,我明白活动是由android清除的,而不是我。但是,即使在内存不足的情况下,android也不会清除这些活动。

为什么会这样?

编辑:

我称之为完成的代码(活动B):(输入csharp,monoandroid,xamarin)

    void GoBack()
    {
        if (MadeChanges) {
            Helpers.Dialogs.Show (this,
                null,
                Resources.GetString(Resource.String.dialogitemnotsaved),
                new Helpers.Dialogs.Button (
                    Resources.GetString(global::Android.Resource.String.Yes),
                    () => {
                        Finish ();
                        AnimationHelper.FinishActivityAnimation (this);
                    }
                ),
                new Helpers.Dialogs.Button (
                    Resources.GetString(global::Android.Resource.String.Cancel),
                    null
                )
            );
        } else {
            Finish ();
            AnimationHelper.FinishActivityAnimation (this);
        }
    }

    public override void OnBackPressed ()
    {
        GoBack ();
    }

    public override bool OnOptionsItemSelected(IMenuItem item)
    {
        switch (item.ItemId)
        {
        case global::Android.Resource.Id.Home:

            GoBack ();
            return true;
        default:
            return base.OnOptionsItemSelected(item);
        }
    }

如何从活动A打开活动B:

            Intent intent = new Intent (Activity, typeof(ActivityB));
            intent.AddFlags (ActivityFlags.SingleTop);
            this.StartActivityForResult (intent, REFRESH);
            AnimationHelper.StartActivityAnimation (this.Activity);

0 个答案:

没有答案