概要
有名なバグなのかはちょっと分からないのですが,あまり情報が出ていないようなので紹介.
今のところ 4.4.2 Kitkat で確認しています(そのほかのバージョンは調べてないです)
一応 Issue にはなっていました
保存した文字列
aaa
bbb
ccc
文字数は 4 * 3 = 12.
cccの最後に改行があるのがポイント
(Qiitaでは4行目が見えなくなっているけど…)
後からSharedPreferenceから取得した文字列
aaa
bbb
ccc
文字数は 4 * 3 = 12・・・のはずが,lengthを取ってみると16
文字を反転させると分かるけど, 4行目に半角スペースが4つ追加されている
条件
- SharedPreferenceに文字列を記録する
- 文字列の最後に改行がある
- 文字列を追加した後, 一度プロセスを落として SharedPreferenceから値を読み込む
一度プロセスを落とす必要があるのは,通常SharedPreferenceの読み書きはメモリ上で行われるため.プロセスを落とすことで,値が再度ファイルから読み込まれる.これが重要
記録させた後のSharedPreferenceのファイル
<?xml version='1.0' encoding='utf-8' standalone='yes' ?>
<map>
<string name="test">aaa
bbb
ccc
</string>
</map>
閉じタグが半角スペースでインデントされてる…