У меня есть одноэлементный, типичный дизайн со статическим «экземпляром» для хранения глобального состояния. Я замечаю, что иногда при переключении между действиями переменная mInstance становится нулевой и требует повторной обработки, в результате чего все данные становятся пустыми.
Это ожидается или я что-то не так делаю? Действительно ли есть шанс, что статические переменные синглтона будут аннулированы в таком сценарии? Я серьезно сомневаюсь в этом и хотел бы услышать некоторые мнения.
Код наклеен:
public class RuleManager extends ArrayAdapter<Rule>
{
private static RuleManager mInstance;
private final Context context;
public RuleManager(Context context, List<Rule> r)
{
super(context,R.layout.main_menu_options_list_item);
if(r==null)r=new ArrayList<Rule>();
this.context=context;
}
public static RuleManager getInstance(Context context,List<Rule> r)
{
if (mInstance == null)
mInstance = new RuleManager(context, r);
return mInstance;
}
}
Я только что узнал, что такое хранение контекста никогда не позволит собирать мусор и, следовательно, может вызвать большую утечку.