Merge "Fix race condition when requestNetworkScan" into main

This commit is contained in:
Chaohui Wang
2024-07-26 03:29:07 +00:00
committed by Android (Google) Code Review

View File

@@ -30,8 +30,8 @@ import com.android.settings.R
import com.android.settings.network.telephony.CellInfoUtil.getNetworkTitle import com.android.settings.network.telephony.CellInfoUtil.getNetworkTitle
import com.android.settings.network.telephony.telephonyManager import com.android.settings.network.telephony.telephonyManager
import com.android.settingslib.spa.framework.util.collectLatestWithLifecycle import com.android.settingslib.spa.framework.util.collectLatestWithLifecycle
import java.util.concurrent.Executors
import kotlinx.coroutines.Dispatchers import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.asExecutor
import kotlinx.coroutines.channels.awaitClose import kotlinx.coroutines.channels.awaitClose
import kotlinx.coroutines.flow.Flow import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.callbackFlow import kotlinx.coroutines.flow.callbackFlow
@@ -96,7 +96,9 @@ class NetworkScanRepository(private val context: Context, subId: Int) {
val networkScan = telephonyManager.requestNetworkScan( val networkScan = telephonyManager.requestNetworkScan(
createNetworkScan(), createNetworkScan(),
Dispatchers.Default.asExecutor(), // requestNetworkScan() could call callbacks concurrently, so we use a single thread
// to avoid racing conditions.
Executors.newSingleThreadExecutor(),
callback, callback,
) )