Merge "Use AsyncTask.SERIAL_EXECUTOR as the default executor for scan"
This commit is contained in:
@@ -5425,7 +5425,10 @@ public class TelephonyManager {
|
||||
* app has carrier privileges (see {@link #hasCarrierPrivileges}).
|
||||
*
|
||||
* @param request Contains all the RAT with bands/channels that need to be scanned.
|
||||
* @param executor The executor through which the callback should be invoked.
|
||||
* @param executor The executor through which the callback should be invoked. Since the scan
|
||||
* request may trigger multiple callbacks and they must be invoked in the same order as
|
||||
* they are received by the platform, the user should provide an executor which executes
|
||||
* tasks one at a time in serial order. For example AsyncTask.SERIAL_EXECUTOR.
|
||||
* @param callback Returns network scan results or errors.
|
||||
* @return A NetworkScan obj which contains a callback which can be used to stop the scan.
|
||||
*/
|
||||
@@ -5451,7 +5454,7 @@ public class TelephonyManager {
|
||||
@RequiresPermission(android.Manifest.permission.MODIFY_PHONE_STATE)
|
||||
public NetworkScan requestNetworkScan(
|
||||
NetworkScanRequest request, TelephonyScanManager.NetworkScanCallback callback) {
|
||||
return requestNetworkScan(request, AsyncTask.THREAD_POOL_EXECUTOR, callback);
|
||||
return requestNetworkScan(request, AsyncTask.SERIAL_EXECUTOR, callback);
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@@ -137,8 +137,10 @@ public final class TelephonyScanManager {
|
||||
for (int i = 0; i < parcelables.length; i++) {
|
||||
ci[i] = (CellInfo) parcelables[i];
|
||||
}
|
||||
executor.execute(() ->
|
||||
callback.onResults((List<CellInfo>) Arrays.asList(ci)));
|
||||
executor.execute(() ->{
|
||||
Rlog.d(TAG, "onResults: " + ci.toString());
|
||||
callback.onResults((List<CellInfo>) Arrays.asList(ci));
|
||||
});
|
||||
} catch (Exception e) {
|
||||
Rlog.e(TAG, "Exception in networkscan callback onResults", e);
|
||||
}
|
||||
@@ -146,14 +148,20 @@ public final class TelephonyScanManager {
|
||||
case CALLBACK_SCAN_ERROR:
|
||||
try {
|
||||
final int errorCode = message.arg1;
|
||||
executor.execute(() -> callback.onError(errorCode));
|
||||
executor.execute(() -> {
|
||||
Rlog.d(TAG, "onError: " + errorCode);
|
||||
callback.onError(errorCode);
|
||||
});
|
||||
} catch (Exception e) {
|
||||
Rlog.e(TAG, "Exception in networkscan callback onError", e);
|
||||
}
|
||||
break;
|
||||
case CALLBACK_SCAN_COMPLETE:
|
||||
try {
|
||||
executor.execute(() -> callback.onComplete());
|
||||
executor.execute(() -> {
|
||||
Rlog.d(TAG, "onComplete");
|
||||
callback.onComplete();
|
||||
});
|
||||
mScanInfo.remove(message.arg2);
|
||||
} catch (Exception e) {
|
||||
Rlog.e(TAG, "Exception in networkscan callback onComplete", e);
|
||||
|
||||
Reference in New Issue
Block a user