From c7b60f72dda5c5f222342a9d60435ec353a8a19b Mon Sep 17 00:00:00 2001 From: satok Date: Wed, 31 Aug 2011 16:30:27 +0900 Subject: [PATCH] Fix DeadObjectException of the spell checker Bug: 5119646 Change-Id: I2938a2206b79645c13a54cc7200f64c2c0aa3836 --- .../android/server/TextServicesManagerService.java | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/services/java/com/android/server/TextServicesManagerService.java b/services/java/com/android/server/TextServicesManagerService.java index f6c369eacddf4..c792b33bf2b4b 100644 --- a/services/java/com/android/server/TextServicesManagerService.java +++ b/services/java/com/android/server/TextServicesManagerService.java @@ -201,7 +201,7 @@ public class TextServicesManagerService extends ITextServicesManager.Stub { Settings.Secure.getString(mContext.getContentResolver(), Settings.Secure.SELECTED_SPELL_CHECKER_SUBTYPE); if (DBG) { - Slog.w(TAG, "getCurrentSpellChecker: " + subtypeHashCodeStr); + Slog.w(TAG, "getCurrentSpellCheckerSubtype: " + subtypeHashCodeStr); } final SpellCheckerInfo sci = getCurrentSpellChecker(null); if (sci == null || sci.getSubtypeCount() == 0) { @@ -509,7 +509,8 @@ public class TextServicesManagerService extends ITextServicesManager.Stub { listener.mScLocale, listener.mScListener, listener.mBundle); listener.mTsListener.onServiceConnected(session); } catch (RemoteException e) { - Slog.e(TAG, "Exception in getting the spell checker session: " + e); + Slog.e(TAG, "Exception in getting the spell checker session." + + "Reconnect to the spellchecker. ", e); removeAll(); return; } @@ -579,8 +580,12 @@ public class TextServicesManagerService extends ITextServicesManager.Stub { Slog.d(TAG, "cleanLocked"); } if (mListeners.isEmpty()) { - if (mSpellCheckerBindGroups.containsKey(this)) { - mSpellCheckerBindGroups.remove(this); + final String sciId = mInternalConnection.mSciId; + if (mSpellCheckerBindGroups.containsKey(sciId)) { + if (DBG) { + Slog.d(TAG, "Remove bind group."); + } + mSpellCheckerBindGroups.remove(sciId); } // Unbind service when there is no active clients. mContext.unbindService(mInternalConnection);