diff --git a/src/api-impl/android/content/res/AssetManager.java b/src/api-impl/android/content/res/AssetManager.java index 19528f27..2628b9f6 100644 --- a/src/api-impl/android/content/res/AssetManager.java +++ b/src/api-impl/android/content/res/AssetManager.java @@ -147,13 +147,18 @@ public final class AssetManager { } } + private Map tableBlockCache = new HashMap<>(); private EntryGroup tableBlockSearch(int resId) { + if (tableBlockCache.containsKey(resId)) { + return tableBlockCache.get(resId); + } EntryGroup ret = null; for (TableBlock tableBlock : tableBlocks) { ret = tableBlock.search(resId); if (ret != null) break; } + tableBlockCache.put(resId, ret); return ret; } @@ -913,6 +918,12 @@ public final class AssetManager { ResXmlPullParser parser = (ResXmlPullParser)set; outIndices[0] = 0; + Map xmlCache = new HashMap<>(); + if (set != null) { + for (int j=0; j