@Override
protected Void doInBackground(Void... ignored) {
int numSessionsToRemove;
- ArrayMap<IBinder, Integer> sessionsToRemove;
+
+ SparseArray<IBinder> sessionsToRemove;
synchronized (mLock) {
numSessionsToRemove = mSessions.size();
- sessionsToRemove = new ArrayMap<>(numSessionsToRemove);
+ sessionsToRemove = new SparseArray<>(numSessionsToRemove);
for (int i = 0; i < numSessionsToRemove; i++) {
Session session = mSessions.valueAt(i);
- sessionsToRemove.put(session.getActivityTokenLocked(), session.id);
+ sessionsToRemove.put(session.id, session.getActivityTokenLocked());
}
}
for (int i = 0; i < numSessionsToRemove; i++) {
try {
// The activity manager cannot resolve activities that have been removed
- if (am.getActivityClassForToken(sessionsToRemove.keyAt(i)) != null) {
+ if (am.getActivityClassForToken(sessionsToRemove.valueAt(i)) != null) {
sessionsToRemove.removeAt(i);
i--;
numSessionsToRemove--;
synchronized (mLock) {
for (int i = 0; i < numSessionsToRemove; i++) {
- Session sessionToRemove = mSessions.get(sessionsToRemove.valueAt(i));
+ Session sessionToRemove = mSessions.get(sessionsToRemove.keyAt(i));
- if (sessionToRemove != null) {
+ if (sessionToRemove != null && sessionsToRemove.valueAt(i)
+ == sessionToRemove.getActivityTokenLocked()) {
if (sessionToRemove.isSavingLocked()) {
if (sVerbose) {
Slog.v(TAG, "Session " + sessionToRemove.id + " is saving");
pw.print(prefix); pw.print("id: "); pw.println(id);
pw.print(prefix); pw.print("uid: "); pw.println(uid);
pw.print(prefix); pw.print("mActivityToken: "); pw.println(mActivityToken);
- pw.print(prefix); pw.print("mResponses: "); pw.println(mResponses.size());
- for (int i = 0; i < mResponses.size(); i++) {
- pw.print(prefix2); pw.print('#'); pw.print(i); pw.print(' ');
- pw.println(mResponses.valueAt(i));
+ pw.print(prefix); pw.print("mResponses: ");
+ if (mResponses == null) {
+ pw.println("null");
+ } else {
+ pw.println(mResponses.size());
+ for (int i = 0; i < mResponses.size(); i++) {
+ pw.print(prefix2); pw.print('#'); pw.print(i);
+ pw.print(' '); pw.println(mResponses.valueAt(i));
+ }
}
pw.print(prefix); pw.print("mCurrentViewId: "); pw.println(mCurrentViewId);
pw.print(prefix); pw.print("mViewStates size: "); pw.println(mViewStates.size());