diff options
author | Wink Saville <wink@google.com> | 2012-08-08 14:14:24 -0700 |
---|---|---|
committer | android code review <noreply-gerritcodereview@google.com> | 2012-08-08 14:14:24 -0700 |
commit | af0dd9f082ff3ab5295cbf00eb2ea6d8db820ce6 (patch) | |
tree | f9206fc26e3ac08a18e9665a00eca442413c309d | |
parent | 71013cbdc4a9b1b0eaa0d21af1641f90e4e47f42 (diff) | |
parent | d8e2ecdca2d1bc91f48cea59e96aa5b0b452e8a7 (diff) | |
download | android_packages_apps_Stk-af0dd9f082ff3ab5295cbf00eb2ea6d8db820ce6.tar.gz android_packages_apps_Stk-af0dd9f082ff3ab5295cbf00eb2ea6d8db820ce6.tar.bz2 android_packages_apps_Stk-af0dd9f082ff3ab5295cbf00eb2ea6d8db820ce6.zip |
Merge "Stk: Fix crash due to race condition"
-rw-r--r-- | src/com/android/stk/StkAppService.java | 22 |
1 files changed, 11 insertions, 11 deletions
diff --git a/src/com/android/stk/StkAppService.java b/src/com/android/stk/StkAppService.java index 1007a4a..9dcd25b 100644 --- a/src/com/android/stk/StkAppService.java +++ b/src/com/android/stk/StkAppService.java @@ -144,20 +144,11 @@ public class StkAppService extends Service implements Runnable { @Override public void onCreate() { // Initialize members + // This can return null if StkService is not yet instantiated, but it's ok + // If this is null we will do getInstance before we need to use this mStkService = com.android.internal.telephony.cat.CatService .getInstance(); - // NOTE mStkService is a singleton and continues to exist even if the GSMPhone is disposed - // after the radio technology change from GSM to CDMA so the PHONE_TYPE_CDMA check is - // needed. In case of switching back from CDMA to GSM the GSMPhone constructor updates - // the instance. (TODO: test). - if ((mStkService == null) - && (TelephonyManager.getDefault().getPhoneType() - != TelephonyManager.PHONE_TYPE_CDMA)) { - CatLog.d(this, " Unable to get Service handle"); - return; - } - mCmdsQ = new LinkedList<DelayedCmd>(); Thread serviceThread = new Thread(null, this, "Stk App Service"); serviceThread.start(); @@ -488,6 +479,15 @@ public class StkAppService extends Service implements Runnable { if (mCurrentCmd == null) { return; } + if (mStkService == null) { + mStkService = com.android.internal.telephony.cat.CatService.getInstance(); + if (mStkService == null) { + // This should never happen (we should be responding only to a message + // that arrived from StkService). It has to exist by this time + throw new RuntimeException("mStkService is null when we need to send response"); + } + } + CatResponseMessage resMsg = new CatResponseMessage(mCurrentCmd); // set result code |