Improve the performance of displaying preference.
- Set a variable to record the status then replace getAvailabilityStatus() with it. Test: manual test, use command to run MobileNetworkSettings and record it. Bug: 154061428 Change-Id: Ia13a75a3821bb6c17d0dfeffb5043f47b60adf61
This commit is contained in:
@@ -23,12 +23,17 @@ import android.telephony.SubscriptionManager;
|
||||
|
||||
import com.android.settings.core.BasePreferenceController;
|
||||
|
||||
import java.util.concurrent.atomic.AtomicBoolean;
|
||||
import java.util.concurrent.atomic.AtomicInteger;
|
||||
|
||||
/**
|
||||
* {@link BasePreferenceController} that used by all preferences that requires subscription id.
|
||||
*/
|
||||
public abstract class TelephonyBasePreferenceController extends BasePreferenceController
|
||||
implements TelephonyAvailabilityCallback {
|
||||
implements TelephonyAvailabilityCallback, TelephonyAvailabilityHandler {
|
||||
protected int mSubId;
|
||||
private AtomicInteger mAvailabilityStatus = new AtomicInteger(0);
|
||||
private AtomicBoolean mUnsetAvailabilityStatus = new AtomicBoolean(false);
|
||||
|
||||
public TelephonyBasePreferenceController(Context context, String preferenceKey) {
|
||||
super(context, preferenceKey);
|
||||
@@ -37,7 +42,21 @@ public abstract class TelephonyBasePreferenceController extends BasePreferenceCo
|
||||
|
||||
@Override
|
||||
public int getAvailabilityStatus() {
|
||||
return MobileNetworkUtils.getAvailability(mContext, mSubId, this::getAvailabilityStatus);
|
||||
if (!mUnsetAvailabilityStatus.get()) {
|
||||
mAvailabilityStatus.set(MobileNetworkUtils
|
||||
.getAvailability(mContext, mSubId, this::getAvailabilityStatus));
|
||||
}
|
||||
return mAvailabilityStatus.get();
|
||||
}
|
||||
|
||||
@Override
|
||||
public void setAvailabilityStatus(int status) {
|
||||
mAvailabilityStatus.set(status);
|
||||
}
|
||||
|
||||
@Override
|
||||
public void unsetAvailabilityStatus(boolean enable) {
|
||||
mUnsetAvailabilityStatus.set(enable);
|
||||
}
|
||||
|
||||
/**
|
||||
|
Reference in New Issue
Block a user