[Settings] Code refactor for availability session

Code refactor for session design of availability status config.

Bug: 141833767
Test: manual
Change-Id: Ia4982bc4036abbcff5ee1a4bba69bdf6f70ad657
This commit is contained in:
Bonian Chen
2020-05-04 13:31:02 +08:00
parent 7dc7252c15
commit 7ea8e7ef1e
6 changed files with 189 additions and 61 deletions

View File

@@ -23,7 +23,6 @@ import android.telephony.SubscriptionManager;
import com.android.settings.core.BasePreferenceController;
import java.util.concurrent.atomic.AtomicBoolean;
import java.util.concurrent.atomic.AtomicInteger;
/**
@@ -33,7 +32,7 @@ public abstract class TelephonyBasePreferenceController extends BasePreferenceCo
implements TelephonyAvailabilityCallback, TelephonyAvailabilityHandler {
protected int mSubId;
private AtomicInteger mAvailabilityStatus = new AtomicInteger(0);
private AtomicBoolean mUnsetAvailabilityStatus = new AtomicBoolean(false);
private AtomicInteger mSetSessionCount = new AtomicInteger(0);
public TelephonyBasePreferenceController(Context context, String preferenceKey) {
super(context, preferenceKey);
@@ -42,7 +41,7 @@ public abstract class TelephonyBasePreferenceController extends BasePreferenceCo
@Override
public int getAvailabilityStatus() {
if (!mUnsetAvailabilityStatus.get()) {
if (mSetSessionCount.get() <= 0) {
mAvailabilityStatus.set(MobileNetworkUtils
.getAvailability(mContext, mSubId, this::getAvailabilityStatus));
}
@@ -52,11 +51,12 @@ public abstract class TelephonyBasePreferenceController extends BasePreferenceCo
@Override
public void setAvailabilityStatus(int status) {
mAvailabilityStatus.set(status);
mSetSessionCount.getAndIncrement();
}
@Override
public void unsetAvailabilityStatus(boolean enable) {
mUnsetAvailabilityStatus.set(enable);
public void unsetAvailabilityStatus() {
mSetSessionCount.getAndDecrement();
}
/**