Я использую Dependency Service, чтобы получить специфическую для платформы реализацию интерфейса.Допустим, у меня есть следующий интерфейс:
public interface IMyInterface
{
bool IsEnabled { get; set; }
}
И класс реализации в моем проекте Android:
[assembly: Dependency(typeof(MyClass))]
namespace App.Droid
{
class MyClass : IMyInterface
{
public bool IsEnabled { get; set; }
}
}
В какой-то момент кода я установил IsEnabled
в true
.
После этого я запускаю новое действие, которое переводит мое приложение в фоновый режим:
Intent intent = new Intent();
intent.SetAction(action);
intent.SetFlags(ActivityFlags.NewTask);
MainActivity.Instance.StartActivity(intent);
Когда мое приложение возвращается на передний план, я получаю доступ к свойству IsEnabled
и получаюfalse
вместо true
.Это на самом деле происходит с каждым отдельным свойством и приватным полем класса, в котором он находится.Собираются ли эти свойства мусором, когда я покидаю приложение для нового действия?
Единственный способ, который я нашел, чтобы решить эту проблему, это сделать все вспомогательные поля static
, но это приводит к большим накладным расходам в коде, что может быть ненужным, если бы я знал причины этого поведения.