繰り返しますが、オンラインでこのバージョンPersistentStoreHelper
に変更することをお勧めします。
アプリをアンインストールするときに永続ストアから値を取得Boolean
したりString
削除したりできますが、それらはアプリにのみ存在できるオブジェクト内にある必要があります。
例えば:
PersistentStoreHelper store = PersistentStoreHelper.getInstance();
store.put("flagged", Boolean.TRUE);
// commit will save changes to the `flagged` variable
store.commit();
そして、後で次のように取得します。
PersistentStoreHelper store = PersistentStoreHelper.getInstance();
boolean isFlagged = ((Boolean)store.get("flagged")).booleanValue();
これを機能させる鍵は私のクラス内にあり、私の/あなたのアプリに固有のサブクラス内PersistentStoreHelper
にすべてを保存します( )。またはオブジェクトを、通常のではなく、そのアプリ固有のサブクラス内に格納する必要があります。Hashtable
MyAppsHashtable
String
Boolean
Hashtable
java.util.Hashtable
繰り返しますが、これを自分で簡単にして、投稿したコードを使用してください。
注:また、おそらくこれはご存知でしょうが、アプリとその永続ストア データが完全に削除されていることを確認するには、デバイスを再起動する必要がある場合があります。
アップデート
私がオンラインに投稿PersistentStoreHelper
した元のクラスを変更した場合は、そのメソッドまたはクラス内の他のメソッドにアクセスする必要があるため、次のようなコードを追加するだけでその問題を解決できます。containsKey()
Hashtable
public boolean containsKey(String key) {
return persistentHashtable.containsKey(key);
}
PeristentStoreHelper
クラス に。メンバーにしないpersistentHashtable
でくださいpublic static
。Hashtable
より多くのメソッドを使用する必要があるため、上記の で示したように、それらのラッパーcontainsKey()
を追加するだけです。もちろん、次のcontainsKey()
コードを使用するだけで同じことを実現できます。
boolean containsFlagged = (store.get("flagged") != null);
更新 2
消去する必要がある古い永続データに行き詰まった場合は、次のように変更PersistentStoreHelper
して状況を検出および修正できます (提案については @adwiv へのハットチップ)。
private PersistentStoreHelper() {
persistentObject = PersistentStore.getPersistentObject(KEY);
Object contents = persistentObject.getContents();
if (contents instanceof MyAppsHashtable) {
persistentHashtable = (MyAppsHashtable)contents;
} else {
// store might be empty, or contents could be the wrong type
persistentHashtable = new MyAppsHashtable();
persistentObject.setContents(persistentHashtable);
persistentObject.commit();
}
}