Merge "Prevent recycling if the color mapping changed." into sc-v2-dev
This commit is contained in:
committed by
Android (Google) Code Review
commit
33bb0ba36b
@@ -97,7 +97,8 @@ public class AppWidgetHostView extends FrameLayout {
|
|||||||
AppWidgetProviderInfo mInfo;
|
AppWidgetProviderInfo mInfo;
|
||||||
View mView;
|
View mView;
|
||||||
int mViewMode = VIEW_MODE_NOINIT;
|
int mViewMode = VIEW_MODE_NOINIT;
|
||||||
int mLayoutId = -1;
|
// If true, we should not try to re-apply the RemoteViews on the next inflation.
|
||||||
|
boolean mColorMappingChanged = false;
|
||||||
private InteractionHandler mInteractionHandler;
|
private InteractionHandler mInteractionHandler;
|
||||||
private boolean mOnLightBackground;
|
private boolean mOnLightBackground;
|
||||||
private SizeF mCurrentSize = null;
|
private SizeF mCurrentSize = null;
|
||||||
@@ -540,7 +541,6 @@ public class AppWidgetHostView extends FrameLayout {
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
content = getDefaultView();
|
content = getDefaultView();
|
||||||
mLayoutId = -1;
|
|
||||||
mViewMode = VIEW_MODE_DEFAULT;
|
mViewMode = VIEW_MODE_DEFAULT;
|
||||||
} else {
|
} else {
|
||||||
// Select the remote view we are actually going to apply.
|
// Select the remote view we are actually going to apply.
|
||||||
@@ -557,8 +557,7 @@ public class AppWidgetHostView extends FrameLayout {
|
|||||||
// inflate any requested LayoutParams.
|
// inflate any requested LayoutParams.
|
||||||
mRemoteContext = getRemoteContextEnsuringCorrectCachedApkPath();
|
mRemoteContext = getRemoteContextEnsuringCorrectCachedApkPath();
|
||||||
|
|
||||||
int layoutId = rvToApply.getLayoutId();
|
if (!mColorMappingChanged && rvToApply.canRecycleView(mView)) {
|
||||||
if (rvToApply.canRecycleView(mView)) {
|
|
||||||
try {
|
try {
|
||||||
rvToApply.reapply(mContext, mView, mInteractionHandler, mCurrentSize,
|
rvToApply.reapply(mContext, mView, mInteractionHandler, mCurrentSize,
|
||||||
mColorResources);
|
mColorResources);
|
||||||
@@ -583,7 +582,6 @@ public class AppWidgetHostView extends FrameLayout {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
mLayoutId = layoutId;
|
|
||||||
mViewMode = VIEW_MODE_CONTENT;
|
mViewMode = VIEW_MODE_CONTENT;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -591,6 +589,7 @@ public class AppWidgetHostView extends FrameLayout {
|
|||||||
}
|
}
|
||||||
|
|
||||||
private void applyContent(View content, boolean recycled, Exception exception) {
|
private void applyContent(View content, boolean recycled, Exception exception) {
|
||||||
|
mColorMappingChanged = false;
|
||||||
if (content == null) {
|
if (content == null) {
|
||||||
if (mViewMode == VIEW_MODE_ERROR) {
|
if (mViewMode == VIEW_MODE_ERROR) {
|
||||||
// We've already done this -- nothing to do.
|
// We've already done this -- nothing to do.
|
||||||
@@ -626,7 +625,7 @@ public class AppWidgetHostView extends FrameLayout {
|
|||||||
|
|
||||||
// If our stale view has been prepared to match active, and the new
|
// If our stale view has been prepared to match active, and the new
|
||||||
// layout matches, try recycling it
|
// layout matches, try recycling it
|
||||||
if (remoteViews.canRecycleView(mView)) {
|
if (!mColorMappingChanged && remoteViews.canRecycleView(mView)) {
|
||||||
try {
|
try {
|
||||||
mLastExecutionSignal = remoteViews.reapplyAsync(mContext,
|
mLastExecutionSignal = remoteViews.reapplyAsync(mContext,
|
||||||
mView,
|
mView,
|
||||||
@@ -666,7 +665,6 @@ public class AppWidgetHostView extends FrameLayout {
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onViewApplied(View v) {
|
public void onViewApplied(View v) {
|
||||||
AppWidgetHostView.this.mLayoutId = mLayoutId;
|
|
||||||
mViewMode = VIEW_MODE_CONTENT;
|
mViewMode = VIEW_MODE_CONTENT;
|
||||||
|
|
||||||
applyContent(v, mIsReapply, null);
|
applyContent(v, mIsReapply, null);
|
||||||
@@ -907,7 +905,7 @@ public class AppWidgetHostView extends FrameLayout {
|
|||||||
}
|
}
|
||||||
mColorMapping = colorMapping.clone();
|
mColorMapping = colorMapping.clone();
|
||||||
mColorResources = RemoteViews.ColorResources.create(mContext, mColorMapping);
|
mColorResources = RemoteViews.ColorResources.create(mContext, mColorMapping);
|
||||||
mLayoutId = -1;
|
mColorMappingChanged = true;
|
||||||
mViewMode = VIEW_MODE_NOINIT;
|
mViewMode = VIEW_MODE_NOINIT;
|
||||||
reapplyLastRemoteViews();
|
reapplyLastRemoteViews();
|
||||||
}
|
}
|
||||||
@@ -937,7 +935,7 @@ public class AppWidgetHostView extends FrameLayout {
|
|||||||
if (mColorResources != null) {
|
if (mColorResources != null) {
|
||||||
mColorResources = null;
|
mColorResources = null;
|
||||||
mColorMapping = null;
|
mColorMapping = null;
|
||||||
mLayoutId = -1;
|
mColorMappingChanged = true;
|
||||||
mViewMode = VIEW_MODE_NOINIT;
|
mViewMode = VIEW_MODE_NOINIT;
|
||||||
reapplyLastRemoteViews();
|
reapplyLastRemoteViews();
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user