From e980bd3a5d89fe6e7783af713be5748a4f419711 Mon Sep 17 00:00:00 2001 From: Santiago Etchebehere Date: Tue, 23 May 2023 20:56:19 -0700 Subject: Unregister listeners from ClockRegistry when destroyed We now need to keep track of ClockRegistry per lifecycleOwner or we could risk having a ClockRegistry with already unregistered listeners used elsewhere (eg, if the injector is called from 2 different Activities) Fixes: 283124260 Test: manually verified going through all screens with clocks and checking no leaks Change-Id: I1390646a1dfbf745a0c7b90dcd1c6a988ed4421d --- .../customization/picker/clock/ui/fragment/ClockCustomDemoFragment.kt | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'src/com/android/customization/picker/clock/ui/fragment/ClockCustomDemoFragment.kt') diff --git a/src/com/android/customization/picker/clock/ui/fragment/ClockCustomDemoFragment.kt b/src/com/android/customization/picker/clock/ui/fragment/ClockCustomDemoFragment.kt index 7e53ac44..6203e24c 100644 --- a/src/com/android/customization/picker/clock/ui/fragment/ClockCustomDemoFragment.kt +++ b/src/com/android/customization/picker/clock/ui/fragment/ClockCustomDemoFragment.kt @@ -36,7 +36,8 @@ class ClockCustomDemoFragment : AppbarFragment() { setUpToolbar(view) clockRegistry = (InjectorProvider.getInjector() as ThemePickerInjector).getClockRegistry( - requireContext() + requireContext(), + this ) val listInUse = clockRegistry.getClocks().filter { "NOT_IN_USE" !in it.clockId } -- cgit v1.2.3 From ac7d7a07e95e6235843da8e7e1d4c4e1dd868b1c Mon Sep 17 00:00:00 2001 From: Austin Wang Date: Fri, 2 Jun 2023 17:33:05 -0700 Subject: Fixed leak and no clock carousel (1/3) Previously, ClockRegistry is bond to activity lifecycle and it's not stable with unregister call followed by register in a short period of time. Remove the register/unregister ClockRegistry from ClockRegistryProvider (used in activity), and move to app level singleton. Register ClockRegistry listeners when app started and cleaned up when app ended. Bug: 285348630 Bug: 285321790 Test: resume/destroy WPP then launch LS tab Test: rotate foldable inner screen Test: run profiler check no related leaks Change-Id: I5b9d8eba17b3164a3da5f81058c5c6c90f6a2272 --- .../customization/picker/clock/ui/fragment/ClockCustomDemoFragment.kt | 1 - 1 file changed, 1 deletion(-) (limited to 'src/com/android/customization/picker/clock/ui/fragment/ClockCustomDemoFragment.kt') diff --git a/src/com/android/customization/picker/clock/ui/fragment/ClockCustomDemoFragment.kt b/src/com/android/customization/picker/clock/ui/fragment/ClockCustomDemoFragment.kt index 6203e24c..f138d6a4 100644 --- a/src/com/android/customization/picker/clock/ui/fragment/ClockCustomDemoFragment.kt +++ b/src/com/android/customization/picker/clock/ui/fragment/ClockCustomDemoFragment.kt @@ -37,7 +37,6 @@ class ClockCustomDemoFragment : AppbarFragment() { clockRegistry = (InjectorProvider.getInjector() as ThemePickerInjector).getClockRegistry( requireContext(), - this ) val listInUse = clockRegistry.getClocks().filter { "NOT_IN_USE" !in it.clockId } -- cgit v1.2.3