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

Commit 213c9ca6 authored by Bonian Chen's avatar Bonian Chen Committed by Android (Google) Code Review
Browse files

Merge "[Settings] Avoid from main UI thread blocking on accessing eSIM" into sc-qpr1-dev

parents cb1969d4 656c9652
Loading
Loading
Loading
Loading
+12 −3
Original line number Diff line number Diff line
@@ -84,6 +84,8 @@ import java.util.Arrays;
import java.util.List;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.Future;
import java.util.concurrent.TimeUnit;
import java.util.concurrent.TimeoutException;

public class MobileNetworkUtils {

@@ -258,9 +260,16 @@ public class MobileNetworkUtils {
    public static boolean showEuiccSettings(Context context) {
        long timeForAccess = SystemClock.elapsedRealtime();
        try {
            return ((Future<Boolean>) ThreadUtils.postOnBackgroundThread(()
                    -> showEuiccSettingsDetecting(context))).get();
        } catch (ExecutionException | InterruptedException exception) {
            Boolean isShow = ((Future<Boolean>) ThreadUtils.postOnBackgroundThread(() -> {
                        try {
                            return showEuiccSettingsDetecting(context);
                        } catch (Exception threadException) {
                            Log.w(TAG, "Accessing Euicc failure", threadException);
                        }
                        return Boolean.FALSE;
                    })).get(3, TimeUnit.SECONDS);
            return ((isShow != null) && isShow.booleanValue());
        } catch (ExecutionException | InterruptedException | TimeoutException exception) {
            timeForAccess = SystemClock.elapsedRealtime() - timeForAccess;
            Log.w(TAG, "Accessing Euicc takes too long: +" + timeForAccess + "ms");
        }