diff options
author | 2014-04-17 16:59:19 +0900 | |
---|---|---|
committer | 2014-04-17 17:39:19 +0900 | |
commit | 5c490e5da5a1a403c307eb3660fe74158434a0dc (patch) | |
tree | e01cbe3ea9aea02f01c0a4f4fcf29362a2fb8cb0 /java/src/com/android/inputmethod/latin/utils/RunInLocale.java | |
parent | b21edc44026bac1a41cbf01aa4476c5cdf2a1812 (diff) | |
download | latinime-5c490e5da5a1a403c307eb3660fe74158434a0dc.tar.gz latinime-5c490e5da5a1a403c307eb3660fe74158434a0dc.tar.xz latinime-5c490e5da5a1a403c307eb3660fe74158434a0dc.zip |
Refactor RunInLocale a bit
Change-Id: If60877b29bb1263161ec85c99320ad07b7dd4245
Diffstat (limited to 'java/src/com/android/inputmethod/latin/utils/RunInLocale.java')
-rw-r--r-- | java/src/com/android/inputmethod/latin/utils/RunInLocale.java | 22 |
1 files changed, 10 insertions, 12 deletions
diff --git a/java/src/com/android/inputmethod/latin/utils/RunInLocale.java b/java/src/com/android/inputmethod/latin/utils/RunInLocale.java index 2c9e3b191..3c632bbc3 100644 --- a/java/src/com/android/inputmethod/latin/utils/RunInLocale.java +++ b/java/src/com/android/inputmethod/latin/utils/RunInLocale.java @@ -30,25 +30,23 @@ public abstract class RunInLocale<T> { * Execute {@link #job(Resources)} method in specified system locale exclusively. * * @param res the resources to use. - * @param newLocale the locale to change to. + * @param newLocale the locale to change to. Run in system locale if null. * @return the value returned from {@link #job(Resources)}. */ public T runInLocale(final Resources res, final Locale newLocale) { synchronized (sLockForRunInLocale) { - final Configuration conf = res.getConfiguration(); - final Locale oldLocale = conf.locale; - final boolean needsChange = (newLocale != null && !newLocale.equals(oldLocale)); + final Configuration savedConf = res.getConfiguration(); + if (newLocale == null || newLocale.equals(savedConf.locale)) { + return job(res); + } + final Configuration newConf = new Configuration(); + newConf.setTo(savedConf); + newConf.setLocale(newLocale); try { - if (needsChange) { - conf.locale = newLocale; - res.updateConfiguration(conf, null); - } + res.updateConfiguration(newConf, null); return job(res); } finally { - if (needsChange) { - conf.locale = oldLocale; - res.updateConfiguration(conf, null); - } + res.updateConfiguration(savedConf, null); } } } |