投稿

3月, 2015の投稿を表示しています

Android の SharedPreferences データはオンメモリで保持されている

SharedPreferences 関連の不具合を調べていてAOSP のコードを見ていたら、 SharedPreferences の挙動について気づいたので Tips としてメモしておきます。 SharedPrefereces に保存した設定値は読み捨てでOK Androidアプリで設定等の小さいデータを保存するのに使用する SharedPreferences ですが、Android Framework 内では SharedPreferencesImpl   というクラスで実装されています。 SharedPreferencesImpl (Android 5.0.1) http://tools.oesf.biz/android-5.0.1_r1.0/xref/frameworks/base/core/java/android/app/SharedPreferencesImpl.java このクラスではコンストラクタでXMLファイルからデータを読み込み、 Map<String, Object>   で SharedPreferences の中身のデータを保持し続けています。 try { stat = Os.stat(mFile.getPath()); if (mFile.canRead()) { BufferedInputStream str = null; try { str = new BufferedInputStream( new FileInputStream(mFile), 16*1024); map = XmlUtils.readMapXml(str); } catch (XmlPullParserException e) { Log.w(TAG, "getSharedPreferences", e); } catch (FileNotFoundException e) { Log.w(TAG, "getSharedPreferences", e);