Действия Android хранятся в памяти, нет слушателей или ссылок
У меня есть 2 вида деятельности (скажем, A и B). Когда я нажимаю кнопку на A, я запускаю экземпляр B через StartActivity. Когда я возвращаюсь к 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);
}
}
как открыть действие B из действия A:
Intent intent = new Intent (Activity, typeof(ActivityB));
intent.AddFlags (ActivityFlags.SingleTop);
this.StartActivityForResult (intent, REFRESH);
AnimationHelper.StartActivityAnimation (this.Activity);