diff options
author | Wink Saville <wink@google.com> | 2012-08-08 14:58:54 -0700 |
---|---|---|
committer | Android Git Automerger <android-git-automerger@android.com> | 2012-08-08 14:58:54 -0700 |
commit | 1650f080bc6e1e5cd78bca9f1c732edd2a5950b2 (patch) | |
tree | 091b8dcc939ef18a2703b0e3a2a7af3bf59a70b7 | |
parent | b548bdcc34592bba628cf99c89bd156b9b9509f6 (diff) | |
parent | 558abb1db945f2ad8da7d89c06f569798a8eba87 (diff) | |
download | packages_apps_Stk-1650f080bc6e1e5cd78bca9f1c732edd2a5950b2.zip packages_apps_Stk-1650f080bc6e1e5cd78bca9f1c732edd2a5950b2.tar.gz packages_apps_Stk-1650f080bc6e1e5cd78bca9f1c732edd2a5950b2.tar.bz2 |
am 558abb1d: am af0dd9f0: Merge "Stk: Fix crash due to race condition"
* commit '558abb1db945f2ad8da7d89c06f569798a8eba87':
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 |