diff --git a/res/values/strings.xml b/res/values/strings.xml
index feeb3f08120..0596837aa5c 100644
--- a/res/values/strings.xml
+++ b/res/values/strings.xml
@@ -1478,9 +1478,9 @@ found in the list of installed applications.
%1$s: touch to manage
- Avail: %2$s (%1$d procs)
+ Avail: %2$s+%3$s in %1$d
- Other: %2$s (%1$d procs)
+ Other: %2$s in %1$d
Process: %1$s
diff --git a/src/com/android/settings/RunningServices.java b/src/com/android/settings/RunningServices.java
index b7e2a50a295..6c11ea0ce37 100644
--- a/src/com/android/settings/RunningServices.java
+++ b/src/com/android/settings/RunningServices.java
@@ -41,6 +41,7 @@ import android.os.Handler;
import android.os.Message;
import android.os.RemoteException;
import android.os.SystemClock;
+import android.os.SystemProperties;
import android.text.format.DateUtils;
import android.text.format.Formatter;
import android.util.AttributeSet;
@@ -55,6 +56,7 @@ import android.widget.ImageView;
import android.widget.ListView;
import android.widget.TextView;
+import java.io.FileInputStream;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
@@ -74,6 +76,11 @@ public class RunningServices extends ListActivity
static final long TIME_UPDATE_DELAY = 1000;
static final long CONTENTS_UPDATE_DELAY = 2000;
+ // Memory pages are 4K.
+ static final long PAGE_SIZE = 4*1024;
+
+ long SECONDARY_SERVER_MEM;
+
final HashMap mActiveItems = new HashMap();
ActivityManager mAm;
@@ -93,9 +100,12 @@ public class RunningServices extends ListActivity
int mLastNumForegroundProcesses = -1;
long mLastBackgroundProcessMemory = -1;
long mLastForegroundProcessMemory = -1;
+ long mLastAvailMemory = -1;
Dialog mCurDialog;
+ byte[] mBuffer = new byte[1024];
+
class ActiveItem {
View mRootView;
BaseItem mItem;
@@ -744,6 +754,63 @@ public class RunningServices extends ListActivity
}
};
+ private boolean matchText(byte[] buffer, int index, String text) {
+ int N = text.length();
+ if ((index+N) >= buffer.length) {
+ return false;
+ }
+ for (int i=0; i= '0' && buffer[index] <= '9') {
+ int start = index;
+ index++;
+ while (index < buffer.length && buffer[index] >= '0'
+ && buffer[index] <= '9') {
+ index++;
+ }
+ String str = new String(buffer, 0, start, index-start);
+ return ((long)Integer.parseInt(str)) * 1024;
+ }
+ index++;
+ }
+ return 0;
+ }
+
+ private long readAvailMem() {
+ try {
+ long memFree = 0;
+ long memCached = 0;
+ FileInputStream is = new FileInputStream("/proc/meminfo");
+ int len = is.read(mBuffer);
+ is.close();
+ final int BUFLEN = mBuffer.length;
+ for (int i=0; i