import android.content.Context;
import android.content.Intent;
import android.content.res.Resources;
+import android.os.Build;
import android.os.Handler;
import android.os.Looper;
import android.os.UserHandle;
import com.android.systemui.statusbar.phone.StatusBarIconController;
import com.android.systemui.tuner.TunerService;
import com.android.systemui.tuner.TunerService.Tunable;
+import com.android.systemui.util.leak.GarbageMonitor;
import java.io.FileDescriptor;
import java.io.PrintWriter;
if (tile.equals("default")) {
if (!addedDefault) {
tiles.addAll(Arrays.asList(defaultTileList.split(",")));
+ if (Build.IS_DEBUGGABLE
+ && GarbageMonitor.MemoryTile.ADD_TO_DEFAULT_ON_DEBUGGABLE_BUILDS) {
+ tiles.add(GarbageMonitor.MemoryTile.TILE_SPEC);
+ }
addedDefault = true;
}
} else {
private static final String FORCE_ENABLE_LEAK_REPORTING = "sysui_force_enable_leak_reporting";
private static final boolean HEAP_TRACKING_ENABLED = Build.IS_DEBUGGABLE;
- private static final boolean ENABLE_AM_HEAP_LIMIT = true; // use ActivityManager.setHeapLimit
+
+ // whether to use ActivityManager.setHeapLimit
+ private static final boolean ENABLE_AM_HEAP_LIMIT = Build.IS_DEBUGGABLE;
+ // heap limit value, in KB (overrides R.integer.watch_heap_limit)
+ private static final String SETTINGS_KEY_AM_HEAP_LIMIT = "systemui_am_heap_limit";
private static final String TAG = "GarbageMonitor";
mDumpTruck = new DumpTruck(mContext);
if (ENABLE_AM_HEAP_LIMIT) {
- mHeapLimit = mContext.getResources().getInteger(R.integer.watch_heap_limit);
+ mHeapLimit = Settings.Global.getInt(context.getContentResolver(),
+ SETTINGS_KEY_AM_HEAP_LIMIT,
+ mContext.getResources().getInteger(R.integer.watch_heap_limit));
}
}
public static class MemoryTile extends QSTileImpl<QSTile.State> {
public static final String TILE_SPEC = "dbg:mem";
+ // Tell QSTileHost.java to toss this into the default tileset?
+ public static final boolean ADD_TO_DEFAULT_ON_DEBUGGABLE_BUILDS = true;
+
private final GarbageMonitor gm;
private ProcessMemInfo pmi;