From eb4fea1a36ee6edc93bf9eb9848eb6be519b8c75 Mon Sep 17 00:00:00 2001 From: Chaohui Wang Date: Tue, 13 Jun 2023 17:08:33 +0800 Subject: [PATCH] Call onViewCreated in DashboardFragment To let fragment's view lifecycle owner passed in to controllers. For UI usage, view lifecycle owner is the best choice, controller could use this lifecycle owner to observe events and do UI related works. Usage DataSaverController as first example. Bug: 287005021 Test: Manually for DataSaverController Change-Id: Id965ea3a24d61f4d0ec6735632944f41f72ba06a --- .../specialaccess/DataSaverController.kt | 2 +- .../specialaccess/SpecialAccessSettings.java | 10 ---------- .../settings/dashboard/DashboardFragment.java | 12 ++++++++++++ .../android/settings/datausage/DataSaverSummary.kt | 7 ------- 4 files changed, 13 insertions(+), 18 deletions(-) diff --git a/src/com/android/settings/applications/specialaccess/DataSaverController.kt b/src/com/android/settings/applications/specialaccess/DataSaverController.kt index 3a2fdb002b1..baed0aa5ec4 100644 --- a/src/com/android/settings/applications/specialaccess/DataSaverController.kt +++ b/src/com/android/settings/applications/specialaccess/DataSaverController.kt @@ -51,7 +51,7 @@ class DataSaverController(context: Context, key: String) : BasePreferenceControl preference = screen.findPreference(preferenceKey)!! } - fun init(viewLifecycleOwner: LifecycleOwner) { + override fun onViewCreated(viewLifecycleOwner: LifecycleOwner) { viewLifecycleOwner.lifecycleScope.launch { viewLifecycleOwner.repeatOnLifecycle(Lifecycle.State.STARTED) { preference.summary = getUnrestrictedSummary(mContext) diff --git a/src/com/android/settings/applications/specialaccess/SpecialAccessSettings.java b/src/com/android/settings/applications/specialaccess/SpecialAccessSettings.java index 9f4c8958cf4..2cbc30422fc 100644 --- a/src/com/android/settings/applications/specialaccess/SpecialAccessSettings.java +++ b/src/com/android/settings/applications/specialaccess/SpecialAccessSettings.java @@ -21,10 +21,6 @@ import static android.app.admin.DevicePolicyResources.Strings.Settings.MANAGE_DE import android.app.settings.SettingsEnums; import android.os.Bundle; -import android.view.View; - -import androidx.annotation.NonNull; -import androidx.annotation.Nullable; import com.android.settings.R; import com.android.settings.dashboard.DashboardFragment; @@ -50,12 +46,6 @@ public class SpecialAccessSettings extends DashboardFragment { MANAGE_DEVICE_ADMIN_APPS, R.string.manage_device_admin); } - @Override - public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { - super.onViewCreated(view, savedInstanceState); - use(DataSaverController.class).init(getViewLifecycleOwner()); - } - @Override protected int getPreferenceScreenResId() { return R.xml.special_access; diff --git a/src/com/android/settings/dashboard/DashboardFragment.java b/src/com/android/settings/dashboard/DashboardFragment.java index f8a5d76b6fa..d4acfa11c57 100644 --- a/src/com/android/settings/dashboard/DashboardFragment.java +++ b/src/com/android/settings/dashboard/DashboardFragment.java @@ -25,11 +25,14 @@ import android.preference.PreferenceManager.OnActivityResultListener; import android.text.TextUtils; import android.util.ArrayMap; import android.util.Log; +import android.view.View; import androidx.annotation.CallSuper; +import androidx.annotation.NonNull; import androidx.annotation.Nullable; import androidx.annotation.VisibleForTesting; import androidx.lifecycle.LifecycleObserver; +import androidx.lifecycle.LifecycleOwner; import androidx.preference.Preference; import androidx.preference.PreferenceCategory; import androidx.preference.PreferenceGroup; @@ -169,6 +172,15 @@ public abstract class DashboardFragment extends SettingsPreferenceFragment } } + @Override + public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) { + super.onViewCreated(view, savedInstanceState); + LifecycleOwner viewLifecycleOwner = getViewLifecycleOwner(); + for (AbstractPreferenceController controller : mControllers) { + controller.onViewCreated(viewLifecycleOwner); + } + } + @Override public void onCategoriesChanged(Set categories) { final String categoryKey = getCategoryKey(); diff --git a/src/com/android/settings/datausage/DataSaverSummary.kt b/src/com/android/settings/datausage/DataSaverSummary.kt index 13fbbfa3069..0828d362410 100644 --- a/src/com/android/settings/datausage/DataSaverSummary.kt +++ b/src/com/android/settings/datausage/DataSaverSummary.kt @@ -19,11 +19,9 @@ import android.app.settings.SettingsEnums import android.content.Context import android.os.Bundle import android.telephony.SubscriptionManager -import android.view.View import android.widget.Switch import com.android.settings.R import com.android.settings.SettingsActivity -import com.android.settings.applications.specialaccess.DataSaverController import com.android.settings.dashboard.DashboardFragment import com.android.settings.search.BaseSearchIndexProvider import com.android.settings.widget.SettingsMainSwitchBar @@ -59,11 +57,6 @@ class DataSaverSummary : DashboardFragment() { } } - override fun onViewCreated(view: View, savedInstanceState: Bundle?) { - super.onViewCreated(view, savedInstanceState) - use(DataSaverController::class.java).init(viewLifecycleOwner) - } - override fun onResume() { super.onResume() dataSaverBackend.addListener(dataSaverBackendListener)