我有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);