Don't hold on to AssetManager instances

If we enter multi-window mode or load WebView
assets into a Resources object, then the underlying
AssetManager instance may change.

crbug.com/627586

Bug:30118654

Change-Id: I837637bdad5370809db7f060d7d8536b536cad9e
This commit is contained in:
Adam Lesinski
2016-07-13 12:09:24 -07:00
parent b2b203ae13
commit e60064ab3c

View File

@@ -49,6 +49,10 @@ public class TypedArray {
attrs.mLength = len;
attrs.mRecycled = false;
// Reset the assets, which may have changed due to configuration changes
// or further resource loading.
attrs.mAssets = res.getAssets();
final int fullLen = len * AssetManager.STYLE_NUM_ENTRIES;
if (attrs.mData.length >= fullLen) {
return attrs;
@@ -66,7 +70,7 @@ public class TypedArray {
private final Resources mResources;
private final DisplayMetrics mMetrics;
private final AssetManager mAssets;
private AssetManager mAssets;
private boolean mRecycled;
@@ -1086,6 +1090,7 @@ public class TypedArray {
// These may have been set by the client.
mXml = null;
mTheme = null;
mAssets = null;
mResources.mTypedArrayPool.release(this);
}