diff --git a/telephony/java/android/telephony/TelephonyScanManager.java b/telephony/java/android/telephony/TelephonyScanManager.java index 28747dab38dbb..9ff8515986486 100644 --- a/telephony/java/android/telephony/TelephonyScanManager.java +++ b/telephony/java/android/telephony/TelephonyScanManager.java @@ -104,7 +104,7 @@ public final class TelephonyScanManager { private final Looper mLooper; private final Messenger mMessenger; - private SparseArray mScanInfo = new SparseArray(); + private final SparseArray mScanInfo = new SparseArray(); public TelephonyScanManager() { HandlerThread thread = new HandlerThread(TAG); @@ -204,14 +204,16 @@ public final class TelephonyScanManager { try { ITelephony telephony = getITelephony(); if (telephony != null) { - int scanId = telephony.requestNetworkScan( - subId, request, mMessenger, new Binder(), callingPackage); - if (scanId == INVALID_SCAN_ID) { - Rlog.e(TAG, "Failed to initiate network scan"); - return null; + synchronized (mScanInfo) { + int scanId = telephony.requestNetworkScan( + subId, request, mMessenger, new Binder(), callingPackage); + if (scanId == INVALID_SCAN_ID) { + Rlog.e(TAG, "Failed to initiate network scan"); + return null; + } + saveScanInfo(scanId, request, executor, callback); + return new NetworkScan(scanId, subId); } - saveScanInfo(scanId, request, executor, callback); - return new NetworkScan(scanId, subId); } } catch (RemoteException ex) { Rlog.e(TAG, "requestNetworkScan RemoteException", ex); @@ -223,9 +225,7 @@ public final class TelephonyScanManager { private void saveScanInfo( int id, NetworkScanRequest request, Executor executor, NetworkScanCallback callback) { - synchronized (mScanInfo) { - mScanInfo.put(id, new NetworkScanInfo(request, executor, callback)); - } + mScanInfo.put(id, new NetworkScanInfo(request, executor, callback)); } private ITelephony getITelephony() {