2012年9月11日火曜日
Preferenceの論理破壊のコメントもらったので、どういう動きになるか試してみたよ。
[インストール直後]
---------------------
設定ファイルなし
---------------------
取得値
-autoboot:初期値(false)
-repeat:初期値(あああ)
-offset:初期値(かかか)
[値を設定]
---------------------
<?xml version='1.0' encoding='utf-8' standalone='yes' ?>
<map>
<string name="offset">かきくけこ</string>
<string name="repeat">あいうえお</string>
<boolean name="autoboot" value="true" />
</map>
---------------------
取得値
-autoboot:設定値(true)
-repeat:設定値(あいうえお)
-offset:設定値(かきくけこ)
[1つをあえて破壊]
---------------------
<?xml version='1.0' encoding='utf-8' standalone='yes' ?>
<map>
<string name="offset">かきくけこ</string>
<null name="repeat" />
<boolean name="autoboot" value="true" />
</map>
---------------------
取得値
-autoboot:設定値(true)
-repeat:初期値(あああ)
-offset:設定値(かきくけこ)
[復旧]
---------------------
<?xml version='1.0' encoding='utf-8' standalone='yes' ?>
<map>
<string name="offset">かきくけこ</string>
<string name="repeat">あいうえお</string>
<boolean name="autoboot" value="true" />
</map>
---------------------
取得値
-autoboot:設定値(true)
-repeat:設定値(あいうえお)
-offset:設定値(かきくけこ)
上記のように、破壊された設定値は読めなかった(まぁ当然ですね)が、ほかの値は正常に読めていました。
nullを設定した値に関しても、初期値で取得されます。
ということで、論理破壊が起こった場合は、その項目についてのみ設定がぶっとぶ(初期値に戻る)事がわかりました。
で、論理破壊が起こるとすると、コーディングミスがほとんどだと思います。
→コメントでももらいましたが、クリアされたインスタンス変数を設定しているなど。
これは、治せます。(というか、治します。)
論理破壊の判断基準としては、設定全消しではなくて、項目単位で消えるはずです。
もし、お手持ちのSwipeStarterで、だいたいこの項目とこの項目が消えるぜっ!ってのがあれば、ご連絡ください。
※すいませんが、プログラムを見直した感じだと、この落ち方をする個所はないように思えたので、場所の特定には至っていません。
また、僕の端末でもこのような設定消去が起こったとこがないので、あたりも付けられず。。。。
ごめんなさい。。
-備忘録-
putStringでnull設定しても、nullっていうノードができるのね。
イメージとしては<string name="xxx" />みたいになると思ってた。
ノード名=型名でした。
指摘もらってよかった。たくさん勉強になった。
登録:
コメントの投稿 (Atom)
0 件のコメント:
コメントを投稿