Merge "Don't call public non-final getResources() from getAssets()"

This commit is contained in:
Alan Viverette
2015-12-17 16:38:42 +00:00
committed by Android (Google) Code Review
3 changed files with 28 additions and 6 deletions

View File

@@ -326,10 +326,30 @@ public abstract class Context {
*/
public static final int BIND_NOT_VISIBLE = 0x40000000;
/** Return an AssetManager instance for your application's package. */
/**
* Returns an AssetManager instance for the application's package.
* <p>
* <strong>Note:</strong> Implementations of this method should return
* an AssetManager instance that is consistent with the Resources instance
* returned by {@link #getResources()}. For example, they should share the
* same {@link Configuration} object.
*
* @return an AssetManager instance for the application's package
* @see #getResources()
*/
public abstract AssetManager getAssets();
/** Return a Resources instance for your application's package. */
/**
* Returns a Resources instance for the application's package.
* <p>
* <strong>Note:</strong> Implementations of this method should return
* a Resources instance that is consistent with the AssetManager instance
* returned by {@link #getAssets()}. For example, they should share the
* same {@link Configuration} object.
*
* @return a Resources instance for the application's package
* @see #getAssets()
*/
public abstract Resources getResources();
/** Return PackageManager instance to find global package information. */

View File

@@ -82,8 +82,7 @@ public class ContextWrapper extends Context {
}
@Override
public Resources getResources()
{
public Resources getResources() {
return mBase.getResources();
}

View File

@@ -104,11 +104,15 @@ public class ContextThemeWrapper extends ContextWrapper {
@Override
public AssetManager getAssets() {
// Ensure we're returning assets with the correct configuration.
return getResources().getAssets();
return getResourcesInternal().getAssets();
}
@Override
public Resources getResources() {
return getResourcesInternal();
}
private Resources getResourcesInternal() {
if (mResources == null) {
if (mOverrideConfiguration == null) {
mResources = super.getResources();
@@ -117,7 +121,6 @@ public class ContextThemeWrapper extends ContextWrapper {
mResources = resContext.getResources();
}
}
return mResources;
}