Merge "Fix memory leak in LocalActivityManager. Also properly removes embedded activities. Bug #2738247"
This commit is contained in:
@@ -20,13 +20,11 @@ import android.content.Intent;
|
||||
import android.content.pm.ActivityInfo;
|
||||
import android.os.Binder;
|
||||
import android.os.Bundle;
|
||||
import android.util.Config;
|
||||
import android.util.Log;
|
||||
import android.view.Window;
|
||||
|
||||
import java.util.ArrayList;
|
||||
import java.util.HashMap;
|
||||
import java.util.Iterator;
|
||||
import java.util.Map;
|
||||
|
||||
/**
|
||||
@@ -38,7 +36,7 @@ import java.util.Map;
|
||||
*/
|
||||
public class LocalActivityManager {
|
||||
private static final String TAG = "LocalActivityManager";
|
||||
private static final boolean localLOGV = false || Config.LOGV;
|
||||
private static final boolean localLOGV = false;
|
||||
|
||||
// Internal token for an Activity being managed by LocalActivityManager.
|
||||
private static class LocalActivityRecord extends Binder {
|
||||
@@ -351,7 +349,7 @@ public class LocalActivityManager {
|
||||
}
|
||||
|
||||
private Window performDestroy(LocalActivityRecord r, boolean finish) {
|
||||
Window win = null;
|
||||
Window win;
|
||||
win = r.window;
|
||||
if (r.curState == RESUMED && !finish) {
|
||||
performPause(r, finish);
|
||||
@@ -385,7 +383,8 @@ public class LocalActivityManager {
|
||||
if (r != null) {
|
||||
win = performDestroy(r, finish);
|
||||
if (finish) {
|
||||
mActivities.remove(r);
|
||||
mActivities.remove(id);
|
||||
mActivityArray.remove(r);
|
||||
}
|
||||
}
|
||||
return win;
|
||||
@@ -446,10 +445,8 @@ public class LocalActivityManager {
|
||||
*/
|
||||
public void dispatchCreate(Bundle state) {
|
||||
if (state != null) {
|
||||
final Iterator<String> i = state.keySet().iterator();
|
||||
while (i.hasNext()) {
|
||||
for (String id : state.keySet()) {
|
||||
try {
|
||||
final String id = i.next();
|
||||
final Bundle astate = state.getBundle(id);
|
||||
LocalActivityRecord r = mActivities.get(id);
|
||||
if (r != null) {
|
||||
@@ -462,9 +459,7 @@ public class LocalActivityManager {
|
||||
}
|
||||
} catch (Exception e) {
|
||||
// Recover from -all- app errors.
|
||||
Log.e(TAG,
|
||||
"Exception thrown when restoring LocalActivityManager state",
|
||||
e);
|
||||
Log.e(TAG, "Exception thrown when restoring LocalActivityManager state", e);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user