summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author Robert Tsai <robtsai@google.com> 2011-07-09 23:57:22 -0700
committer The Android Automerger <android-build@android.com> 2011-07-14 16:17:40 -0700
commitf4fcd4210fad5649c8983e5204151d220270118b (patch)
tree3dce73982eee5b8a8013fe60ab702b497b704bed
parent32e8ebda8bae6c1471894566bb19eb438aeab1fb (diff)
Preserve invariant that sService is not null (although NfcAdapter.get() can return null)
Change-Id: I85fcbc5e79549835dac255ce614bd5d65d39fc25
-rw-r--r--nfc-extras/java/com/android/nfc_extras/NfcAdapterExtras.java17
1 files changed, 11 insertions, 6 deletions
diff --git a/nfc-extras/java/com/android/nfc_extras/NfcAdapterExtras.java b/nfc-extras/java/com/android/nfc_extras/NfcAdapterExtras.java
index 6001be92a322..795b3a880fb6 100644
--- a/nfc-extras/java/com/android/nfc_extras/NfcAdapterExtras.java
+++ b/nfc-extras/java/com/android/nfc_extras/NfcAdapterExtras.java
@@ -68,7 +68,11 @@ public final class NfcAdapterExtras {
/** get service handles */
private static void initService() {
- sService = sAdapter.getNfcAdapterExtrasInterface();
+ final INfcAdapterExtras service = sAdapter.getNfcAdapterExtrasInterface();
+ if (service != null) {
+ // Leave stale rather than receive a null value.
+ sService = service;
+ }
}
/**
@@ -85,18 +89,19 @@ public final class NfcAdapterExtras {
if (sSingleton == null) {
try {
sAdapter = adapter;
- sRouteOff = new CardEmulationRoute(CardEmulationRoute.ROUTE_OFF, null);
sSingleton = new NfcAdapterExtras();
sEmbeddedEe = new NfcExecutionEnvironment(sSingleton);
+ sRouteOff = new CardEmulationRoute(CardEmulationRoute.ROUTE_OFF, null);
sRouteOnWhenScreenOn = new CardEmulationRoute(
CardEmulationRoute.ROUTE_ON_WHEN_SCREEN_ON, sEmbeddedEe);
initService();
} finally {
- if (sSingleton == null) {
- sService = null;
- sEmbeddedEe = null;
- sRouteOff = null;
+ if (sService == null) {
sRouteOnWhenScreenOn = null;
+ sRouteOff = null;
+ sEmbeddedEe = null;
+ sSingleton = null;
+ sAdapter = null;
}
}
}