xml からロードされたデータ用に Android にシングルトンがあります。時々リサイクルされますが、その理由はわかりません。私の知る限り、シングルトンはアプリプロセスの存続期間を通じて存在するはずです。これが私のシングルトンです:
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 クラスのポインターをログに記録しているので、本当に変更された = リサイクルされたことがわかります。
何か案は?ありがとう。
編集:回答は部分的にマークされた回答 + コメントに含まれています。