diff options
| author | 2011-03-25 15:51:42 -0700 | |
|---|---|---|
| committer | 2011-03-25 15:51:42 -0700 | |
| commit | a585eb17aba237b6de393b9fb88e03b996cb63c1 (patch) | |
| tree | 7ae38bfaf99316981d85de1a3b4b26aaafbcaa1f | |
| parent | e2cb08bd4c3bc7e7045e107af41f7228d780be04 (diff) | |
| parent | 14923862577ef785d20fc5c627248897c9eaddb6 (diff) | |
am 14923862: am e69f4267: Merge "NfcAdapterExtras: reset singleton state if initialization fails." into gingerbread
* commit '14923862577ef785d20fc5c627248897c9eaddb6':
NfcAdapterExtras: reset singleton state if initialization fails.
| -rw-r--r-- | nfc-extras/java/com/android/nfc_extras/NfcAdapterExtras.java | 25 |
1 files changed, 16 insertions, 9 deletions
diff --git a/nfc-extras/java/com/android/nfc_extras/NfcAdapterExtras.java b/nfc-extras/java/com/android/nfc_extras/NfcAdapterExtras.java index cf38bd120c86..ed1af49efbb5 100644 --- a/nfc-extras/java/com/android/nfc_extras/NfcAdapterExtras.java +++ b/nfc-extras/java/com/android/nfc_extras/NfcAdapterExtras.java @@ -57,7 +57,6 @@ public final class NfcAdapterExtras { // protected by NfcAdapterExtras.class, and final after first construction private static INfcAdapterExtras sService; - private static boolean sIsInitialized = false; private static NfcAdapterExtras sSingleton; private static NfcExecutionEnvironment sEmbeddedEe; private static CardEmulationRoute sRouteOff; @@ -74,14 +73,22 @@ public final class NfcAdapterExtras { */ public static NfcAdapterExtras get(NfcAdapter adapter) { synchronized(NfcAdapterExtras.class) { - if (!sIsInitialized) { - sIsInitialized = true; - sService = adapter.getNfcAdapterExtrasInterface(); - sEmbeddedEe = new NfcExecutionEnvironment(sService); - sRouteOff = new CardEmulationRoute(CardEmulationRoute.ROUTE_OFF, null); - sRouteOnWhenScreenOn = new CardEmulationRoute( - CardEmulationRoute.ROUTE_ON_WHEN_SCREEN_ON, sEmbeddedEe); - sSingleton = new NfcAdapterExtras(); + if (sSingleton == null) { + try { + sService = adapter.getNfcAdapterExtrasInterface(); + sEmbeddedEe = new NfcExecutionEnvironment(sService); + sRouteOff = new CardEmulationRoute(CardEmulationRoute.ROUTE_OFF, null); + sRouteOnWhenScreenOn = new CardEmulationRoute( + CardEmulationRoute.ROUTE_ON_WHEN_SCREEN_ON, sEmbeddedEe); + sSingleton = new NfcAdapterExtras(); + } finally { + if (sSingleton == null) { + sService = null; + sEmbeddedEe = null; + sRouteOff = null; + sRouteOnWhenScreenOn = null; + } + } } return sSingleton; } |