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
This commit is contained in:
Chaohui Wang
2023-06-13 17:08:33 +08:00
parent f2f899106d
commit eb4fea1a36
4 changed files with 13 additions and 18 deletions

View File

@@ -51,7 +51,7 @@ class DataSaverController(context: Context, key: String) : BasePreferenceControl
preference = screen.findPreference(preferenceKey)!! preference = screen.findPreference(preferenceKey)!!
} }
fun init(viewLifecycleOwner: LifecycleOwner) { override fun onViewCreated(viewLifecycleOwner: LifecycleOwner) {
viewLifecycleOwner.lifecycleScope.launch { viewLifecycleOwner.lifecycleScope.launch {
viewLifecycleOwner.repeatOnLifecycle(Lifecycle.State.STARTED) { viewLifecycleOwner.repeatOnLifecycle(Lifecycle.State.STARTED) {
preference.summary = getUnrestrictedSummary(mContext) preference.summary = getUnrestrictedSummary(mContext)

View File

@@ -21,10 +21,6 @@ import static android.app.admin.DevicePolicyResources.Strings.Settings.MANAGE_DE
import android.app.settings.SettingsEnums; import android.app.settings.SettingsEnums;
import android.os.Bundle; 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.R;
import com.android.settings.dashboard.DashboardFragment; import com.android.settings.dashboard.DashboardFragment;
@@ -50,12 +46,6 @@ public class SpecialAccessSettings extends DashboardFragment {
MANAGE_DEVICE_ADMIN_APPS, R.string.manage_device_admin); 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 @Override
protected int getPreferenceScreenResId() { protected int getPreferenceScreenResId() {
return R.xml.special_access; return R.xml.special_access;

View File

@@ -25,11 +25,14 @@ import android.preference.PreferenceManager.OnActivityResultListener;
import android.text.TextUtils; import android.text.TextUtils;
import android.util.ArrayMap; import android.util.ArrayMap;
import android.util.Log; import android.util.Log;
import android.view.View;
import androidx.annotation.CallSuper; import androidx.annotation.CallSuper;
import androidx.annotation.NonNull;
import androidx.annotation.Nullable; import androidx.annotation.Nullable;
import androidx.annotation.VisibleForTesting; import androidx.annotation.VisibleForTesting;
import androidx.lifecycle.LifecycleObserver; import androidx.lifecycle.LifecycleObserver;
import androidx.lifecycle.LifecycleOwner;
import androidx.preference.Preference; import androidx.preference.Preference;
import androidx.preference.PreferenceCategory; import androidx.preference.PreferenceCategory;
import androidx.preference.PreferenceGroup; 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 @Override
public void onCategoriesChanged(Set<String> categories) { public void onCategoriesChanged(Set<String> categories) {
final String categoryKey = getCategoryKey(); final String categoryKey = getCategoryKey();

View File

@@ -19,11 +19,9 @@ import android.app.settings.SettingsEnums
import android.content.Context import android.content.Context
import android.os.Bundle import android.os.Bundle
import android.telephony.SubscriptionManager import android.telephony.SubscriptionManager
import android.view.View
import android.widget.Switch import android.widget.Switch
import com.android.settings.R import com.android.settings.R
import com.android.settings.SettingsActivity import com.android.settings.SettingsActivity
import com.android.settings.applications.specialaccess.DataSaverController
import com.android.settings.dashboard.DashboardFragment import com.android.settings.dashboard.DashboardFragment
import com.android.settings.search.BaseSearchIndexProvider import com.android.settings.search.BaseSearchIndexProvider
import com.android.settings.widget.SettingsMainSwitchBar 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() { override fun onResume() {
super.onResume() super.onResume()
dataSaverBackend.addListener(dataSaverBackendListener) dataSaverBackend.addListener(dataSaverBackendListener)