Fixed
Status Update
Comments
da...@google.com <da...@google.com>
ap...@google.com <ap...@google.com> #2
Hi Ed, Thank you so much for these suggestions. I've been reviewing them and merging them in. Hopefully it should be live. I've included a thank you note too in the article.
ap...@google.com <ap...@google.com> #3
Great! Thanks a lot, I'll look for the live updates soon!
ap...@google.com <ap...@google.com> #4
Project: platform/frameworks/support
Branch: androidx-master-dev
commit e3cd7798ee735eb7cdc4f3001ea8d13c12330cff
Author: Dake Gu <dake@google.com>
Date: Fri Nov 20 16:09:59 2020
leanback: add RowsSupportFragment view leak test
Test: RowsSupportFragmentTest#viewLeakTest
Bug: 171909417
Change-Id: I770c57a188c3f0c559a61edca6b37499d469efd0
M leanback/leanback/src/androidTest/java/androidx/leanback/app/DetailsFragmentTest.java
M leanback/leanback/src/androidTest/java/androidx/leanback/app/RowsFragmentTest.java
M leanback/leanback/src/androidTest/java/androidx/leanback/app/RowsSupportFragmentTest.java
A leanback/leanback/src/androidTest/java/androidx/leanback/testutils/LeakDetector.java
https://android-review.googlesource.com/1507839
Branch: androidx-master-dev
commit e3cd7798ee735eb7cdc4f3001ea8d13c12330cff
Author: Dake Gu <dake@google.com>
Date: Fri Nov 20 16:09:59 2020
leanback: add RowsSupportFragment view leak test
Test: RowsSupportFragmentTest#viewLeakTest
Bug: 171909417
Change-Id: I770c57a188c3f0c559a61edca6b37499d469efd0
M leanback/leanback/src/androidTest/java/androidx/leanback/app/DetailsFragmentTest.java
M leanback/leanback/src/androidTest/java/androidx/leanback/app/RowsFragmentTest.java
M leanback/leanback/src/androidTest/java/androidx/leanback/app/RowsSupportFragmentTest.java
A leanback/leanback/src/androidTest/java/androidx/leanback/testutils/LeakDetector.java
ap...@google.com <ap...@google.com> #5
Project: platform/frameworks/support
Branch: androidx-master-dev
commit 639e85d4c0a1e7b125f5d70608c702901cb75dcc
Author: Dake Gu <dake@google.com>
Date: Mon Nov 23 09:59:38 2020
leanback: add DetailsSupportFragment viewLeakTest
Test: DetailsSupportFragmentTest#viewLeakTest
Bug: 171909417
Change-Id: I99abdb3b512c7156d40ecdc0463284155fedfea8
M leanback/leanback/src/androidTest/java/androidx/leanback/app/DetailsFragmentTest.java
M leanback/leanback/src/androidTest/java/androidx/leanback/app/DetailsSupportFragmentTest.java
https://android-review.googlesource.com/1507126
Branch: androidx-master-dev
commit 639e85d4c0a1e7b125f5d70608c702901cb75dcc
Author: Dake Gu <dake@google.com>
Date: Mon Nov 23 09:59:38 2020
leanback: add DetailsSupportFragment viewLeakTest
Test: DetailsSupportFragmentTest#viewLeakTest
Bug: 171909417
Change-Id: I99abdb3b512c7156d40ecdc0463284155fedfea8
M leanback/leanback/src/androidTest/java/androidx/leanback/app/DetailsFragmentTest.java
M leanback/leanback/src/androidTest/java/androidx/leanback/app/DetailsSupportFragmentTest.java
ap...@google.com <ap...@google.com> #6
Project: platform/frameworks/support
Branch: androidx-master-dev
commit 78e0f950b943b3b5c24e16ca12ae152a82f595ff
Author: Dake Gu <dake@google.com>
Date: Mon Nov 23 19:12:04 2020
leanback: fix BrowseSupportFragment view leak
Fix leaking in onDestroyView, ProgressBarManager
Bug: 171909417
Test: BrowseSupportFragmentTest#viewLeakTest
Change-Id: I344835e2d429a7bacd2416077f054fee20f59dcb
M leanback/leanback/src/androidTest/java/androidx/leanback/app/BrowseFragmentTest.java
M leanback/leanback/src/androidTest/java/androidx/leanback/app/BrowseSupportFragmentTest.java
M leanback/leanback/src/androidTest/java/androidx/leanback/testutils/LeakDetector.java
M leanback/leanback/src/main/java/androidx/leanback/app/BaseFragment.java
M leanback/leanback/src/main/java/androidx/leanback/app/BaseSupportFragment.java
M leanback/leanback/src/main/java/androidx/leanback/app/BrowseFragment.java
M leanback/leanback/src/main/java/androidx/leanback/app/BrowseSupportFragment.java
M leanback/leanback/src/main/java/androidx/leanback/app/ProgressBarManager.java
https://android-review.googlesource.com/1509370
Branch: androidx-master-dev
commit 78e0f950b943b3b5c24e16ca12ae152a82f595ff
Author: Dake Gu <dake@google.com>
Date: Mon Nov 23 19:12:04 2020
leanback: fix BrowseSupportFragment view leak
Fix leaking in onDestroyView, ProgressBarManager
Bug: 171909417
Test: BrowseSupportFragmentTest#viewLeakTest
Change-Id: I344835e2d429a7bacd2416077f054fee20f59dcb
M leanback/leanback/src/androidTest/java/androidx/leanback/app/BrowseFragmentTest.java
M leanback/leanback/src/androidTest/java/androidx/leanback/app/BrowseSupportFragmentTest.java
M leanback/leanback/src/androidTest/java/androidx/leanback/testutils/LeakDetector.java
M leanback/leanback/src/main/java/androidx/leanback/app/BaseFragment.java
M leanback/leanback/src/main/java/androidx/leanback/app/BaseSupportFragment.java
M leanback/leanback/src/main/java/androidx/leanback/app/BrowseFragment.java
M leanback/leanback/src/main/java/androidx/leanback/app/BrowseSupportFragment.java
M leanback/leanback/src/main/java/androidx/leanback/app/ProgressBarManager.java
ap...@google.com <ap...@google.com> #7
Project: platform/frameworks/support
Branch: androidx-master-dev
commit 6c3af0f344dc262b50e3c5fd2621f01109daab32
Author: Dake Gu <dake@google.com>
Date: Tue Nov 24 13:02:27 2020
leanback: fix View leak of VerticalGridSupportFragment
Test: VerticalGridSupportFragmentTest#viewLeakTest
Bug: 171909417
Change-Id: Iaac695b36b0c2e1bddddb2e496ad0fc5038d8e1e
M leanback/leanback/src/androidTest/java/androidx/leanback/app/VerticalGridFragmentTest.java
M leanback/leanback/src/androidTest/java/androidx/leanback/app/VerticalGridSupportFragmentTest.java
M leanback/leanback/src/main/java/androidx/leanback/app/VerticalGridFragment.java
M leanback/leanback/src/main/java/androidx/leanback/app/VerticalGridSupportFragment.java
https://android-review.googlesource.com/1510180
Branch: androidx-master-dev
commit 6c3af0f344dc262b50e3c5fd2621f01109daab32
Author: Dake Gu <dake@google.com>
Date: Tue Nov 24 13:02:27 2020
leanback: fix View leak of VerticalGridSupportFragment
Test: VerticalGridSupportFragmentTest#viewLeakTest
Bug: 171909417
Change-Id: Iaac695b36b0c2e1bddddb2e496ad0fc5038d8e1e
M leanback/leanback/src/androidTest/java/androidx/leanback/app/VerticalGridFragmentTest.java
M leanback/leanback/src/androidTest/java/androidx/leanback/app/VerticalGridSupportFragmentTest.java
M leanback/leanback/src/main/java/androidx/leanback/app/VerticalGridFragment.java
M leanback/leanback/src/main/java/androidx/leanback/app/VerticalGridSupportFragment.java
ap...@google.com <ap...@google.com> #8
Project: platform/frameworks/support
Branch: androidx-master-dev
commit 6c47a1e08882d4932ace063ff2d1ed11f0fe37da
Author: Dake Gu <dake@google.com>
Date: Tue Nov 24 12:09:31 2020
leanback: fix View leak of SearchSupportFragment
Test: SearchSupportFragmentTest#viewLeakTest
Bug: 171909417
Change-Id: Iabe6ba6981650567479534fa17e9b6e33b6c7824
M leanback/leanback/api/1.1.0-beta01.txt
M leanback/leanback/api/current.txt
M leanback/leanback/api/public_plus_experimental_1.1.0-beta01.txt
M leanback/leanback/api/public_plus_experimental_current.txt
M leanback/leanback/api/restricted_1.1.0-beta01.txt
M leanback/leanback/api/restricted_current.txt
M leanback/leanback/src/androidTest/generatev4.py
A leanback/leanback/src/androidTest/java/androidx/leanback/app/SearchFragmentTest.java
A leanback/leanback/src/androidTest/java/androidx/leanback/app/SearchSupportFragmentTest.java
M leanback/leanback/src/main/java/androidx/leanback/app/SearchFragment.java
M leanback/leanback/src/main/java/androidx/leanback/app/SearchSupportFragment.java
https://android-review.googlesource.com/1510177
Branch: androidx-master-dev
commit 6c47a1e08882d4932ace063ff2d1ed11f0fe37da
Author: Dake Gu <dake@google.com>
Date: Tue Nov 24 12:09:31 2020
leanback: fix View leak of SearchSupportFragment
Test: SearchSupportFragmentTest#viewLeakTest
Bug: 171909417
Change-Id: Iabe6ba6981650567479534fa17e9b6e33b6c7824
M leanback/leanback/api/1.1.0-beta01.txt
M leanback/leanback/api/current.txt
M leanback/leanback/api/public_plus_experimental_1.1.0-beta01.txt
M leanback/leanback/api/public_plus_experimental_current.txt
M leanback/leanback/api/restricted_1.1.0-beta01.txt
M leanback/leanback/api/restricted_current.txt
M leanback/leanback/src/androidTest/generatev4.py
A leanback/leanback/src/androidTest/java/androidx/leanback/app/SearchFragmentTest.java
A leanback/leanback/src/androidTest/java/androidx/leanback/app/SearchSupportFragmentTest.java
M leanback/leanback/src/main/java/androidx/leanback/app/SearchFragment.java
M leanback/leanback/src/main/java/androidx/leanback/app/SearchSupportFragment.java
da...@google.com <da...@google.com>
ma...@gmail.com <ma...@gmail.com> #9
Add an optional extended distribution...
th...@gmail.com <th...@gmail.com> #10
Unfortunately one of the commits to fix a leak broke the DetailsSupportFragmentBackgroundController
class.
See for more information:
Description
Component used:
androidx.leanback:leanback:1.1.0-alpha05
RowsSupportFragment
will be used in the following example, but the issue is also present in other fragments.App uses single activity architecture with Androidx Navigation component.
RowsSupportFragment
is declared in the fragment layout xml via aFragmentContainerView
using theandroid:name
attribute.When navigating away and the current fragment is placed in the backstack, the
RowsSupportFragment
instance is retained and re-used, and leaks theVerticalGridView
, and by extension the entire fragment view hierarchy, that should have been destroyed.When the adapter is set on the
RowsSupportFragment
, theVerticalGridView
's adapter is also set viamVerticalGridView.setAdapter(mBridgeAdapter)
, which registers the view as an observer insidemBridgeAdapter
. InBaseRowSupportFragment
'sonDestroyView
, themVerticalGridView
reference is nulled. However, this is insufficient asmBridgeAdapter
still holds a reference to the view as an observer. TheVerticalGridView
's adapter should also be nulled to clear this reference.A workaround is by overriding
RowsSupportFragment
and manually nulling theVerticalGridView
's adapter inonDestroyView
. But this does not work for something likeVerticalGridSupportFragment
which does not expose the internalVerticalGridView
.