Call dispatchFinishTemporaryDetach before returning a transient view

ListView caches transient state views for reuse during layout, which calls
dispatchStartTemporaryDetach() before caching the view. This should always
be followed by a corresponding dispatchFinishTemporaryDetach() before
removing the view from the cache and returning it for reuse. While this
was the case for other types of cached views, we missed this call for
views placed in one of the two transient view caches.

Bug: 17387206
Change-Id: I360945006558b2783c098183a7cc9bc28d05d9ab
This commit is contained in:
Alan Viverette
2015-06-03 10:35:44 -07:00
parent 5431000830
commit 6c413ce638

View File

@@ -2345,8 +2345,10 @@ public abstract class AbsListView extends AdapterView<ListAdapter> implements Te
}
}
// Scrap view implies temporary detachment.
isScrap[0] = true;
// Finish the temporary detach started in addScrapView().
transientView.dispatchFinishTemporaryDetach();
return transientView;
}
@@ -2359,6 +2361,7 @@ public abstract class AbsListView extends AdapterView<ListAdapter> implements Te
} else {
isScrap[0] = true;
// Finish the temporary detach started in addScrapView().
child.dispatchFinishTemporaryDetach();
}
}