Prevent UI jank

Move hide preference logic to getAvailabilityStatus, it can remove
the preference before onresume.

Fixes: 140366463
Test: manual, robolectric
Change-Id: Ie11b5357b1e9340b30b8f19eac60c479cdb7687e
This commit is contained in:
Raff Tsai
2019-09-03 10:00:56 +08:00
parent e5f89ea85d
commit 8641986401
3 changed files with 51 additions and 38 deletions

View File

@@ -49,6 +49,7 @@ public class RestrictAppPreferenceController extends BasePreferenceController {
super(context, KEY_RESTRICT_APP);
mAppOpsManager = (AppOpsManager) context.getSystemService(Context.APP_OPS_SERVICE);
mUserManager = context.getSystemService(UserManager.class);
mAppInfos = BatteryTipUtils.getRestrictedAppsList(mAppOpsManager, mUserManager);
}
public RestrictAppPreferenceController(InstrumentedPreferenceFragment preferenceFragment) {
@@ -58,21 +59,14 @@ public class RestrictAppPreferenceController extends BasePreferenceController {
@Override
public int getAvailabilityStatus() {
return AVAILABLE;
return mAppInfos.size() > 0 ? AVAILABLE : CONDITIONALLY_UNAVAILABLE;
}
@Override
public void updateState(Preference preference) {
super.updateState(preference);
mAppInfos = BatteryTipUtils.getRestrictedAppsList(mAppOpsManager, mUserManager);
public CharSequence getSummary() {
final int num = mAppInfos.size();
// Don't show it if no app been restricted
preference.setVisible(num > 0);
preference.setSummary(
mContext.getResources().getQuantityString(R.plurals.restricted_app_summary, num,
num));
return mContext.getResources().getQuantityString(R.plurals.restricted_app_summary, num,
num);
}
@Override