Merge "Resolve memory leak in TextServicesManagerService" into ics-mr1
This commit is contained in:
@ -635,7 +635,9 @@ public class TextServicesManagerService extends ITextServicesManager.Stub {
|
|||||||
if (DBG) {
|
if (DBG) {
|
||||||
Slog.w(TAG, "Remove " + removeList.get(i));
|
Slog.w(TAG, "Remove " + removeList.get(i));
|
||||||
}
|
}
|
||||||
mListeners.remove(removeList.get(i));
|
final InternalDeathRecipient idr = removeList.get(i);
|
||||||
|
idr.mScListener.asBinder().unlinkToDeath(idr, 0);
|
||||||
|
mListeners.remove(idr);
|
||||||
}
|
}
|
||||||
cleanLocked();
|
cleanLocked();
|
||||||
}
|
}
|
||||||
@ -664,6 +666,11 @@ public class TextServicesManagerService extends ITextServicesManager.Stub {
|
|||||||
public void removeAll() {
|
public void removeAll() {
|
||||||
Slog.e(TAG, "Remove the spell checker bind unexpectedly.");
|
Slog.e(TAG, "Remove the spell checker bind unexpectedly.");
|
||||||
synchronized(mSpellCheckerMap) {
|
synchronized(mSpellCheckerMap) {
|
||||||
|
final int size = mListeners.size();
|
||||||
|
for (int i = 0; i < size; ++i) {
|
||||||
|
final InternalDeathRecipient idr = mListeners.get(i);
|
||||||
|
idr.mScListener.asBinder().unlinkToDeath(idr, 0);
|
||||||
|
}
|
||||||
mListeners.clear();
|
mListeners.clear();
|
||||||
cleanLocked();
|
cleanLocked();
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user