LoginSignup
4
4

More than 5 years have passed since last update.

SharedPreferenceに改行を含む文字列を保存する際の注意点

Last updated at Posted at 2015-07-09

概要

有名なバグなのかはちょっと分からないのですが,あまり情報が出ていないようなので紹介.
今のところ 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>

閉じタグが半角スペースでインデントされてる…

4
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
4