summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNick Pelly <npelly@google.com>2011-03-22 10:14:36 -0700
committerAndroid Git Automerger <android-git-automerger@android.com>2011-03-22 10:14:36 -0700
commit14923862577ef785d20fc5c627248897c9eaddb6 (patch)
treeccff765f66f2432e691ccfdd0629265bdec1fd6a
parent03aa986e6b19e436c71801d2e5af6f44521a94ab (diff)
parente69f4267e1cdf5353fffa99a0d49f4c9069415b9 (diff)
downloadframeworks_base-14923862577ef785d20fc5c627248897c9eaddb6.zip
frameworks_base-14923862577ef785d20fc5c627248897c9eaddb6.tar.gz
frameworks_base-14923862577ef785d20fc5c627248897c9eaddb6.tar.bz2
am e69f4267: Merge "NfcAdapterExtras: reset singleton state if initialization fails." into gingerbread
* commit 'e69f4267e1cdf5353fffa99a0d49f4c9069415b9': NfcAdapterExtras: reset singleton state if initialization fails.
-rw-r--r--nfc-extras/java/com/android/nfc_extras/NfcAdapterExtras.java25
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 cf38bd1..ed1af49 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;
}