我在 Android 中有一个用于从 xml 加载的数据的单例。它有时会被回收,我不明白为什么。据我所知,单例应该存在于应用程序进程的整个生命周期中。这是我的单身人士:
public class DataLib {
public static CategoryList categories = new CategoryList();
public static RegionList regions = new RegionList();
public static CompanyTypeList types = new CompanyTypeList();
public static SearchData searchData = new SearchData();
public static CompaniesList companies = new CompaniesList();
private static RegionData currentRegion;
private static final DataLib INSTANCE = new DataLib();
protected DataLib() {
}
public static DataLib getInstance() {
return INSTANCE;
}
public static void loadData() {
loadCategories();
loadRegions();
loadTypes();
}
/* ... some more static functions are here ...*/
}
如您所见,它不是由任何活动直接实例化,而是由流程本身实例化。当应用程序启动时调用 DataLib.loadData() 来加载数据 = 加载数据时将结束的活动。
我无法确定是什么触发了回收 - 有时应用程序需要在后台停留更长时间,有时需要几分钟。我正在记录 DataLib 类的指针,所以我可以说它确实改变了 = 被回收了。
有任何想法吗?谢谢。
编辑:答案部分在标记的答案+评论中。