From d2bbaaf2948c362e82aa9f1c8e02a6092235c021 Mon Sep 17 00:00:00 2001 From: Brad Fitzpatrick Date: Tue, 30 Nov 2010 12:59:28 -0800 Subject: [PATCH] [don't auto-merge] Don't re-read SharedPreferences unnecessarily. Bug: 3211034 Bug: 3216290 Change-Id: Idd5cc25965d400f20122372ca1cf47d4703dd87c --- core/java/android/app/ContextImpl.java | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/core/java/android/app/ContextImpl.java b/core/java/android/app/ContextImpl.java index 2dd5819aa7235..599807427e7ce 100644 --- a/core/java/android/app/ContextImpl.java +++ b/core/java/android/app/ContextImpl.java @@ -367,7 +367,8 @@ class ContextImpl extends Context { } Map map = null; - if (prefsFile.exists() && prefsFile.canRead()) { + FileStatus stat = new FileStatus(); + if (FileUtils.getFileStatus(prefsFile.getPath(), stat) && prefsFile.canRead()) { try { FileInputStream str = new FileInputStream(prefsFile); map = XmlUtils.readMapXml(str); @@ -380,7 +381,7 @@ class ContextImpl extends Context { Log.w(TAG, "getSharedPreferences", e); } } - sp.replace(map); + sp.replace(map, stat); } return sp; } @@ -2768,12 +2769,16 @@ class ContextImpl extends Context { } } - public void replace(Map newContents) { + /* package */ void replace(Map newContents, FileStatus stat) { synchronized (this) { mLoaded = true; if (newContents != null) { mMap = newContents; } + if (stat != null) { + mStatTimestamp = stat.mtime; + mStatSize = stat.size; + } } }