私は小さなDBを持っており、MainDataManagerというクラスに次のように静的に格納されているシングルトンオブジェクトの必要なデータ抽出を読み取ります。
public class MainDataManager {
private static Context context;
public static MainDataManager mainDataManager = null;
public static MainDataManager getInstance(Context ctx) {
context = ctx;
if (mainDataManager == null) {
...get the data from DB
...put the data in static mainDataManager variable
}
return mainDataManager;
}
これで、アプリのすべてのクラス/アクティビティで、MainDataManager.mainDataManagerデータに簡単にアクセスできます。
いつか、データをデータベースに保存したいと思います。
現在、私はの各活動でこれを行っています
@Override
protected void onPause() {
super.onPause();
saveState(); //saves the mainDataManager's data to the DB
}
これを避けたいので、ユーザーがアプリを終了したときにのみデータベースを更新すれば(これが意味するものは何でも)、またはAndroidがMainDataManagerオブジェクトを破棄したい場合は、実際には十分に「保存」できると思います。
saveState()
メソッド内のアクティビティに呼び出しを入れることはできonDestroy()
ますが、MainDataManagerオブジェクトが破棄された場合にのみデータをDBに保存したいと思います。しかしonDestroy()
、通常のオブジェクトにはありません。
それを処理するための最良の方法は何でしょうか?
ps各アクティビティでsaveState()を使用したくない理由onDestroy()
は、データが非常に少ない場合でもデータベースへの保存が非常に遅いため(特に、古いAndroidスマートフォンの場合)、これはロジックではありません。 DBを更新するために破壊されています。
どうもありがとう