diff options
author | 2011-10-17 19:11:12 -0700 | |
---|---|---|
committer | 2011-10-17 19:11:12 -0700 | |
commit | bf7d8ecb48b1d47d6555d508d0c6a56e0a06efd2 (patch) | |
tree | 81bb29f112262e841caf8231db4476076755ab17 /java/src | |
parent | c5d51a40a444c65bbca2a8bdcf0b4d6a05f59e77 (diff) | |
parent | ddd759aa9e61cd09fa28e36baf946f15427ace8c (diff) | |
download | latinime-bf7d8ecb48b1d47d6555d508d0c6a56e0a06efd2.tar.gz latinime-bf7d8ecb48b1d47d6555d508d0c6a56e0a06efd2.tar.xz latinime-bf7d8ecb48b1d47d6555d508d0c6a56e0a06efd2.zip |
Merge "Close XmlResourceParser when finish parsing"
Diffstat (limited to 'java/src')
-rw-r--r-- | java/src/com/android/inputmethod/keyboard/internal/KeyboardBuilder.java | 17 |
1 files changed, 13 insertions, 4 deletions
diff --git a/java/src/com/android/inputmethod/keyboard/internal/KeyboardBuilder.java b/java/src/com/android/inputmethod/keyboard/internal/KeyboardBuilder.java index dd31d17c8..613ce587b 100644 --- a/java/src/com/android/inputmethod/keyboard/internal/KeyboardBuilder.java +++ b/java/src/com/android/inputmethod/keyboard/internal/KeyboardBuilder.java @@ -19,6 +19,7 @@ package com.android.inputmethod.keyboard.internal; import android.content.Context; import android.content.res.Resources; import android.content.res.TypedArray; +import android.content.res.XmlResourceParser; import android.util.DisplayMetrics; import android.util.Log; import android.util.TypedValue; @@ -268,14 +269,17 @@ public class KeyboardBuilder<KP extends KeyboardParams> { public KeyboardBuilder<KP> load(KeyboardId id) { mParams.mId = id; + final XmlResourceParser parser = mResources.getXml(id.getXmlId()); try { - parseKeyboard(id.getXmlId()); + parseKeyboard(parser); } catch (XmlPullParserException e) { Log.w(TAG, "keyboard XML parse error: " + e); throw new IllegalArgumentException(e); } catch (IOException e) { Log.w(TAG, "keyboard XML parse error: " + e); throw new RuntimeException(e); + } finally { + parser.close(); } return this; } @@ -288,9 +292,9 @@ public class KeyboardBuilder<KP extends KeyboardParams> { return new Keyboard(mParams); } - private void parseKeyboard(int resId) throws XmlPullParserException, IOException { + private void parseKeyboard(XmlResourceParser parser) + throws XmlPullParserException, IOException { if (DEBUG) Log.d(TAG, String.format("<%s> %s", TAG_KEYBOARD, mParams.mId)); - final XmlPullParser parser = mResources.getXml(resId); int event; while ((event = parser.next()) != XmlPullParser.END_DOCUMENT) { if (event == XmlPullParser.START_TAG) { @@ -535,7 +539,12 @@ public class KeyboardBuilder<KP extends KeyboardParams> { throw new ParseException("No keyboardLayout attribute in <include/>", parser); if (DEBUG) Log.d(TAG, String.format("<%s keyboardLayout=%s />", TAG_INCLUDE, mResources.getResourceEntryName(keyboardLayout))); - parseMerge(mResources.getLayout(keyboardLayout), row, skip); + final XmlResourceParser parserForInclude = mResources.getXml(keyboardLayout); + try { + parseMerge(parserForInclude, row, skip); + } finally { + parserForInclude.close(); + } } } |