Merge "Stop network scan before manual select network" into 24D1-dev

This commit is contained in:
Lynn Yeh
2024-06-12 01:00:10 +00:00
committed by Android (Google) Code Review
2 changed files with 22 additions and 9 deletions

View File

@@ -58,6 +58,8 @@ import com.google.common.collect.ImmutableList;
import kotlin.Unit;
import kotlinx.coroutines.Job;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
@@ -98,6 +100,8 @@ public class NetworkSelectSettings extends DashboardFragment {
private AtomicBoolean mShouldFilterOutSatellitePlmn = new AtomicBoolean();
private NetworkScanRepository mNetworkScanRepository;
@Nullable
private Job mNetworkScanJob = null;
@Override
public void onCreate(Bundle icicle) {
@@ -206,13 +210,14 @@ public class NetworkSelectSettings extends DashboardFragment {
private void launchNetworkScan() {
setProgressBarVisible(true);
mNetworkScanRepository.launchNetworkScan(getViewLifecycleOwner(), (networkScanResult) -> {
if (isPreferenceScreenEnabled()) {
scanResultHandler(networkScanResult);
}
mNetworkScanJob = mNetworkScanRepository.launchNetworkScan(getViewLifecycleOwner(),
(networkScanResult) -> {
if (isPreferenceScreenEnabled()) {
scanResultHandler(networkScanResult);
}
return Unit.INSTANCE;
});
return Unit.INSTANCE;
});
}
/**
@@ -238,6 +243,12 @@ public class NetworkSelectSettings extends DashboardFragment {
return false;
}
// Need stop network scan before manual select network.
if (mNetworkScanJob != null) {
mNetworkScanJob.cancel(null);
mNetworkScanJob = null;
}
// Refresh the last selected item in case users reselect network.
clearPreferenceSummary();
if (mSelectedPreference != null) {

View File

@@ -52,9 +52,8 @@ class NetworkScanRepository(context: Context, subId: Int) {
context.getSystemService(TelephonyManager::class.java)!!.createForSubscriptionId(subId)
/** TODO: Move this to UI layer, when UI layer migrated to Kotlin. */
fun launchNetworkScan(lifecycleOwner: LifecycleOwner, onResult: (NetworkScanResult) -> Unit) {
fun launchNetworkScan(lifecycleOwner: LifecycleOwner, onResult: (NetworkScanResult) -> Unit) =
networkScanFlow().collectLatestWithLifecycle(lifecycleOwner, action = onResult)
}
data class CellInfoScanKey(
val title: String?,
@@ -101,7 +100,10 @@ class NetworkScanRepository(context: Context, subId: Int) {
callback,
)
awaitClose { networkScan.stopScan() }
awaitClose {
networkScan.stopScan()
Log.d(TAG, "network scan stopped")
}
}.conflate().onEach { Log.d(TAG, "networkScanFlow: $it") }.flowOn(Dispatchers.Default)
/** Create network scan for allowed network types. */