Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit c1b61edb authored by Chaohui Wang's avatar Chaohui Wang
Browse files

Stop network scan before manual select network

Otherwise device could not connect to network.

Bug: 339226604
Test: manual - Choose network
Change-Id: Ia7e52ad94d5406cab42bd8e7b25ba7e4e13c67fc
Merged-In: Ia7e52ad94d5406cab42bd8e7b25ba7e4e13c67fc
parent 6e906fc6
Loading
Loading
Loading
Loading
+17 −6
Original line number Diff line number Diff line
@@ -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,7 +210,8 @@ public class NetworkSelectSettings extends DashboardFragment {

    private void launchNetworkScan() {
        setProgressBarVisible(true);
        mNetworkScanRepository.launchNetworkScan(getViewLifecycleOwner(), (networkScanResult) -> {
        mNetworkScanJob = mNetworkScanRepository.launchNetworkScan(getViewLifecycleOwner(),
                (networkScanResult) -> {
                    if (isPreferenceScreenEnabled()) {
                        scanResultHandler(networkScanResult);
                    }
@@ -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) {
+5 −3
Original line number Diff line number Diff line
@@ -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. */