19066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/* 29066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Copyright (C) 2007 The Android Open Source Project 39066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 49066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License"); 59066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * you may not use this file except in compliance with the License. 69066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * You may obtain a copy of the License at 79066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 89066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 99066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Unless required by applicable law or agreed to in writing, software 119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * See the License for the specific language governing permissions and 149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * limitations under the License. 159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpackage android.app; 189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.content.ComponentName; 209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.content.Context; 219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.content.Intent; 229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.content.pm.ConfigurationInfo; 239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.content.pm.IPackageDataObserver; 249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.graphics.Bitmap; 254f21c4cf077cfee5b35a56703618115614bc40f2Dianne Hackbornimport android.os.Debug; 269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.os.RemoteException; 279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.os.Handler; 289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.os.Parcel; 299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.os.Parcelable; 302c6c5e6e49795e6e24cd089c9018377d837ba931Dianne Hackbornimport android.os.SystemProperties; 319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport android.text.TextUtils; 329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectimport java.util.List; 339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project/** 359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Interact with the overall activities running in the system. 369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Projectpublic class ActivityManager { 389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private static String TAG = "ActivityManager"; 399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private static boolean DEBUG = false; 409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private static boolean localLOGV = DEBUG || android.util.Config.LOGV; 419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private final Context mContext; 439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private final Handler mHandler; 449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /*package*/ ActivityManager(Context context, Handler handler) { 469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mContext = context; 479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project mHandler = handler; 489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 512c6c5e6e49795e6e24cd089c9018377d837ba931Dianne Hackborn * Return the approximate per-application memory class of the current 522c6c5e6e49795e6e24cd089c9018377d837ba931Dianne Hackborn * device. This gives you an idea of how hard a memory limit you should 532c6c5e6e49795e6e24cd089c9018377d837ba931Dianne Hackborn * impose on your application to let the overall system work best. The 542c6c5e6e49795e6e24cd089c9018377d837ba931Dianne Hackborn * returned value is in megabytes; the baseline Android memory class is 552c6c5e6e49795e6e24cd089c9018377d837ba931Dianne Hackborn * 16 (which happens to be the Java heap limit of those devices); some 562c6c5e6e49795e6e24cd089c9018377d837ba931Dianne Hackborn * device with more memory may return 24 or even higher numbers. 572c6c5e6e49795e6e24cd089c9018377d837ba931Dianne Hackborn */ 582c6c5e6e49795e6e24cd089c9018377d837ba931Dianne Hackborn public int getMemoryClass() { 592c6c5e6e49795e6e24cd089c9018377d837ba931Dianne Hackborn return staticGetMemoryClass(); 602c6c5e6e49795e6e24cd089c9018377d837ba931Dianne Hackborn } 612c6c5e6e49795e6e24cd089c9018377d837ba931Dianne Hackborn 622c6c5e6e49795e6e24cd089c9018377d837ba931Dianne Hackborn /** @hide */ 632c6c5e6e49795e6e24cd089c9018377d837ba931Dianne Hackborn static public int staticGetMemoryClass() { 642c6c5e6e49795e6e24cd089c9018377d837ba931Dianne Hackborn // Really brain dead right now -- just take this from the configured 652c6c5e6e49795e6e24cd089c9018377d837ba931Dianne Hackborn // vm heap size, and assume it is in megabytes and thus ends with "m". 662c6c5e6e49795e6e24cd089c9018377d837ba931Dianne Hackborn String vmHeapSize = SystemProperties.get("dalvik.vm.heapsize", "16m"); 672c6c5e6e49795e6e24cd089c9018377d837ba931Dianne Hackborn return Integer.parseInt(vmHeapSize.substring(0, vmHeapSize.length()-1)); 682c6c5e6e49795e6e24cd089c9018377d837ba931Dianne Hackborn } 692c6c5e6e49795e6e24cd089c9018377d837ba931Dianne Hackborn 702c6c5e6e49795e6e24cd089c9018377d837ba931Dianne Hackborn /** 719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Information you can retrieve about tasks that the user has most recently 729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * started or visited. 739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static class RecentTaskInfo implements Parcelable { 759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * If this task is currently running, this is the identifier for it. 779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * If it is not running, this will be -1. 789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public int id; 809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The original Intent used to launch the task. You can use this 839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Intent to re-launch the task (if it is no longer running) or bring 849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * the current task to the front. 859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public Intent baseIntent; 879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * If this task was started from an alias, this is the actual 909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * activity component that was initially started; the component of 919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * the baseIntent in this case is the name of the actual activity 929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * implementation that the alias referred to. Otherwise, this is null. 939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public ComponentName origActivity; 959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public RecentTaskInfo() { 979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public int describeContents() { 1009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return 0; 1019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void writeToParcel(Parcel dest, int flags) { 1049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project dest.writeInt(id); 1059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (baseIntent != null) { 1069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project dest.writeInt(1); 1079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project baseIntent.writeToParcel(dest, 0); 1089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } else { 1099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project dest.writeInt(0); 1109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ComponentName.writeToParcel(origActivity, dest); 1129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void readFromParcel(Parcel source) { 1159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project id = source.readInt(); 1169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (source.readInt() != 0) { 1179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project baseIntent = Intent.CREATOR.createFromParcel(source); 1189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } else { 1199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project baseIntent = null; 1209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project origActivity = ComponentName.readFromParcel(source); 1229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final Creator<RecentTaskInfo> CREATOR 1259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project = new Creator<RecentTaskInfo>() { 1269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public RecentTaskInfo createFromParcel(Parcel source) { 1279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return new RecentTaskInfo(source); 1289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public RecentTaskInfo[] newArray(int size) { 1309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return new RecentTaskInfo[size]; 1319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project }; 1339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private RecentTaskInfo(Parcel source) { 1359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project readFromParcel(source); 1369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 1409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Flag for use with {@link #getRecentTasks}: return all tasks, even those 1419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * that have set their 1429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link android.content.Intent#FLAG_ACTIVITY_EXCLUDE_FROM_RECENTS} flag. 1439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final int RECENT_WITH_EXCLUDED = 0x0001; 1459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 1479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Return a list of the tasks that the user has recently launched, with 1489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * the most recent being first and older ones after in order. 1499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 1509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param maxNum The maximum number of entries to return in the list. The 1519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * actual number returned may be smaller, depending on how many tasks the 1529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * user has started and the maximum number the system can remember. 1539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 1549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return Returns a list of RecentTaskInfo records describing each of 1559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * the recent tasks. 1569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 1579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @throws SecurityException Throws SecurityException if the caller does 1589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * not hold the {@link android.Manifest.permission#GET_TASKS} permission. 1599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public List<RecentTaskInfo> getRecentTasks(int maxNum, int flags) 1619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project throws SecurityException { 1629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project try { 1639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return ActivityManagerNative.getDefault().getRecentTasks(maxNum, 1649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project flags); 1659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } catch (RemoteException e) { 1669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // System dead, we will be dead too soon! 1679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return null; 1689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 1709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 1729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Information you can retrieve about a particular task that is currently 1739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * "running" in the system. Note that a running task does not mean the 1749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * given task actual has a process it is actively running in; it simply 1759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * means that the user has gone to it and never closed it, but currently 1769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * the system may have killed its process and is only holding on to its 1779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * last state in order to restart it when the user returns. 1789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static class RunningTaskInfo implements Parcelable { 1809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 1819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * A unique identifier for this task. 1829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public int id; 1849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 1869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The component launched as the first activity in the task. This can 1879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * be considered the "application" of this task. 1889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public ComponentName baseActivity; 1909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 1929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The activity component at the top of the history stack of the task. 1939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * This is what the user is currently doing. 1949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 1959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public ComponentName topActivity; 1969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 1979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 1989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Thumbnail representation of the task's current state. 1999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 2009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public Bitmap thumbnail; 2019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 2039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Description of the task's current state. 2049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 2059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public CharSequence description; 2069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 2089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Number of activities in this task. 2099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 2109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public int numActivities; 2119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 2139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Number of activities that are currently running (not stopped 2149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * and persisted) in this task. 2159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 2169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public int numRunning; 2179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public RunningTaskInfo() { 2199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public int describeContents() { 2229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return 0; 2239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void writeToParcel(Parcel dest, int flags) { 2269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project dest.writeInt(id); 2279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ComponentName.writeToParcel(baseActivity, dest); 2289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ComponentName.writeToParcel(topActivity, dest); 2299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (thumbnail != null) { 2309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project dest.writeInt(1); 2319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project thumbnail.writeToParcel(dest, 0); 2329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } else { 2339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project dest.writeInt(0); 2349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project TextUtils.writeToParcel(description, dest, 2369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project Parcelable.PARCELABLE_WRITE_RETURN_VALUE); 2379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project dest.writeInt(numActivities); 2389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project dest.writeInt(numRunning); 2399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void readFromParcel(Parcel source) { 2429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project id = source.readInt(); 2439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project baseActivity = ComponentName.readFromParcel(source); 2449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project topActivity = ComponentName.readFromParcel(source); 2459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (source.readInt() != 0) { 2469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project thumbnail = Bitmap.CREATOR.createFromParcel(source); 2479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } else { 2489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project thumbnail = null; 2499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project description = TextUtils.CHAR_SEQUENCE_CREATOR.createFromParcel(source); 2519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project numActivities = source.readInt(); 2529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project numRunning = source.readInt(); 2539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final Creator<RunningTaskInfo> CREATOR = new Creator<RunningTaskInfo>() { 2569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public RunningTaskInfo createFromParcel(Parcel source) { 2579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return new RunningTaskInfo(source); 2589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public RunningTaskInfo[] newArray(int size) { 2609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return new RunningTaskInfo[size]; 2619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project }; 2639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private RunningTaskInfo(Parcel source) { 2659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project readFromParcel(source); 2669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 2709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Return a list of the tasks that are currently running, with 2719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * the most recent being first and older ones after in order. Note that 2729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * "running" does not mean any of the task's code is currently loaded or 2739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * activity -- the task may have been frozen by the system, so that it 2749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * can be restarted in its previous state when next brought to the 2759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * foreground. 2769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 2779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param maxNum The maximum number of entries to return in the list. The 2789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * actual number returned may be smaller, depending on how many tasks the 2799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * user has started. 2809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 2819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return Returns a list of RunningTaskInfo records describing each of 2829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * the running tasks. 2839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 2849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @throws SecurityException Throws SecurityException if the caller does 2859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * not hold the {@link android.Manifest.permission#GET_TASKS} permission. 2869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 2879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public List<RunningTaskInfo> getRunningTasks(int maxNum) 2889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project throws SecurityException { 2899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project try { 2909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return (List<RunningTaskInfo>)ActivityManagerNative.getDefault() 2919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project .getTasks(maxNum, 0, null); 2929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } catch (RemoteException e) { 2939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // System dead, we will be dead too soon! 2949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return null; 2959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 2979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 2989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 2999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Information you can retrieve about a particular Service that is 3009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * currently running in the system. 3019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 3029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static class RunningServiceInfo implements Parcelable { 3039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 3049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The service component. 3059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 3069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public ComponentName service; 3079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 3099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * If non-zero, this is the process the service is running in. 3109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 3119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public int pid; 3129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 3143025ef332c29e255388f74b2afefe05f64bce07cDianne Hackborn * The UID that owns this service. 3153025ef332c29e255388f74b2afefe05f64bce07cDianne Hackborn */ 3163025ef332c29e255388f74b2afefe05f64bce07cDianne Hackborn public int uid; 3173025ef332c29e255388f74b2afefe05f64bce07cDianne Hackborn 3183025ef332c29e255388f74b2afefe05f64bce07cDianne Hackborn /** 3199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The name of the process this service runs in. 3209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 3219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public String process; 3229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 3249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Set to true if the service has asked to run as a foreground process. 3259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 3269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public boolean foreground; 3279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 3293025ef332c29e255388f74b2afefe05f64bce07cDianne Hackborn * The time when the service was first made active, either by someone 3309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * starting or binding to it. 3319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 3329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public long activeSince; 3339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 3359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Set to true if this service has been explicitly started. 3369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 3379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public boolean started; 3389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 3409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Number of clients connected to the service. 3419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 3429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public int clientCount; 3439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 3459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Number of times the service's process has crashed while the service 3469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * is running. 3479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 3489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public int crashCount; 3499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 3519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The time when there was last activity in the service (either 3529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * explicit requests to start it or clients binding to it). 3539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 3549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public long lastActivityTime; 3559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 3579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * If non-zero, this service is not currently running, but scheduled to 3589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * restart at the given time. 3599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 3609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public long restarting; 3619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 3623025ef332c29e255388f74b2afefe05f64bce07cDianne Hackborn /** 3633025ef332c29e255388f74b2afefe05f64bce07cDianne Hackborn * Bit for {@link #flags}: set if this service has been 3643025ef332c29e255388f74b2afefe05f64bce07cDianne Hackborn * explicitly started. 3653025ef332c29e255388f74b2afefe05f64bce07cDianne Hackborn */ 3663025ef332c29e255388f74b2afefe05f64bce07cDianne Hackborn public static final int FLAG_STARTED = 1<<0; 3673025ef332c29e255388f74b2afefe05f64bce07cDianne Hackborn 3683025ef332c29e255388f74b2afefe05f64bce07cDianne Hackborn /** 3693025ef332c29e255388f74b2afefe05f64bce07cDianne Hackborn * Bit for {@link #flags}: set if the service has asked to 3703025ef332c29e255388f74b2afefe05f64bce07cDianne Hackborn * run as a foreground process. 3713025ef332c29e255388f74b2afefe05f64bce07cDianne Hackborn */ 3723025ef332c29e255388f74b2afefe05f64bce07cDianne Hackborn public static final int FLAG_FOREGROUND = 1<<1; 3733025ef332c29e255388f74b2afefe05f64bce07cDianne Hackborn 3743025ef332c29e255388f74b2afefe05f64bce07cDianne Hackborn /** 3753025ef332c29e255388f74b2afefe05f64bce07cDianne Hackborn * Bit for {@link #flags): set if the service is running in a 3763025ef332c29e255388f74b2afefe05f64bce07cDianne Hackborn * core system process. 3773025ef332c29e255388f74b2afefe05f64bce07cDianne Hackborn */ 3783025ef332c29e255388f74b2afefe05f64bce07cDianne Hackborn public static final int FLAG_SYSTEM_PROCESS = 1<<2; 3793025ef332c29e255388f74b2afefe05f64bce07cDianne Hackborn 3803025ef332c29e255388f74b2afefe05f64bce07cDianne Hackborn /** 3813025ef332c29e255388f74b2afefe05f64bce07cDianne Hackborn * Bit for {@link #flags): set if the service is running in a 3823025ef332c29e255388f74b2afefe05f64bce07cDianne Hackborn * persistent process. 3833025ef332c29e255388f74b2afefe05f64bce07cDianne Hackborn */ 3843025ef332c29e255388f74b2afefe05f64bce07cDianne Hackborn public static final int FLAG_PERSISTENT_PROCESS = 1<<3; 3853025ef332c29e255388f74b2afefe05f64bce07cDianne Hackborn 3863025ef332c29e255388f74b2afefe05f64bce07cDianne Hackborn /** 3873025ef332c29e255388f74b2afefe05f64bce07cDianne Hackborn * Running flags. 3883025ef332c29e255388f74b2afefe05f64bce07cDianne Hackborn */ 3893025ef332c29e255388f74b2afefe05f64bce07cDianne Hackborn public int flags; 3903025ef332c29e255388f74b2afefe05f64bce07cDianne Hackborn 391dd9b82c283815747b75fe4434c65e4b6c9c9b54fDianne Hackborn /** 392dd9b82c283815747b75fe4434c65e4b6c9c9b54fDianne Hackborn * For special services that are bound to by system code, this is 393dd9b82c283815747b75fe4434c65e4b6c9c9b54fDianne Hackborn * the package that holds the binding. 394dd9b82c283815747b75fe4434c65e4b6c9c9b54fDianne Hackborn */ 395dd9b82c283815747b75fe4434c65e4b6c9c9b54fDianne Hackborn public String clientPackage; 396dd9b82c283815747b75fe4434c65e4b6c9c9b54fDianne Hackborn 397dd9b82c283815747b75fe4434c65e4b6c9c9b54fDianne Hackborn /** 398dd9b82c283815747b75fe4434c65e4b6c9c9b54fDianne Hackborn * For special services that are bound to by system code, this is 399dd9b82c283815747b75fe4434c65e4b6c9c9b54fDianne Hackborn * a string resource providing a user-visible label for who the 400dd9b82c283815747b75fe4434c65e4b6c9c9b54fDianne Hackborn * client is. 401dd9b82c283815747b75fe4434c65e4b6c9c9b54fDianne Hackborn */ 402dd9b82c283815747b75fe4434c65e4b6c9c9b54fDianne Hackborn public int clientLabel; 403dd9b82c283815747b75fe4434c65e4b6c9c9b54fDianne Hackborn 4049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public RunningServiceInfo() { 4059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public int describeContents() { 4089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return 0; 4099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void writeToParcel(Parcel dest, int flags) { 4129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ComponentName.writeToParcel(service, dest); 4139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project dest.writeInt(pid); 4143025ef332c29e255388f74b2afefe05f64bce07cDianne Hackborn dest.writeInt(uid); 4159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project dest.writeString(process); 4169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project dest.writeInt(foreground ? 1 : 0); 4179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project dest.writeLong(activeSince); 4189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project dest.writeInt(started ? 1 : 0); 4199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project dest.writeInt(clientCount); 4209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project dest.writeInt(crashCount); 4219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project dest.writeLong(lastActivityTime); 4229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project dest.writeLong(restarting); 4233025ef332c29e255388f74b2afefe05f64bce07cDianne Hackborn dest.writeInt(this.flags); 424dd9b82c283815747b75fe4434c65e4b6c9c9b54fDianne Hackborn dest.writeString(clientPackage); 425dd9b82c283815747b75fe4434c65e4b6c9c9b54fDianne Hackborn dest.writeInt(clientLabel); 4269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void readFromParcel(Parcel source) { 4299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project service = ComponentName.readFromParcel(source); 4309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project pid = source.readInt(); 4313025ef332c29e255388f74b2afefe05f64bce07cDianne Hackborn uid = source.readInt(); 4329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project process = source.readString(); 4339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project foreground = source.readInt() != 0; 4349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project activeSince = source.readLong(); 4359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project started = source.readInt() != 0; 4369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project clientCount = source.readInt(); 4379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project crashCount = source.readInt(); 4389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project lastActivityTime = source.readLong(); 4399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project restarting = source.readLong(); 4403025ef332c29e255388f74b2afefe05f64bce07cDianne Hackborn flags = source.readInt(); 441dd9b82c283815747b75fe4434c65e4b6c9c9b54fDianne Hackborn clientPackage = source.readString(); 442dd9b82c283815747b75fe4434c65e4b6c9c9b54fDianne Hackborn clientLabel = source.readInt(); 4439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final Creator<RunningServiceInfo> CREATOR = new Creator<RunningServiceInfo>() { 4469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public RunningServiceInfo createFromParcel(Parcel source) { 4479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return new RunningServiceInfo(source); 4489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public RunningServiceInfo[] newArray(int size) { 4509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return new RunningServiceInfo[size]; 4519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project }; 4539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private RunningServiceInfo(Parcel source) { 4559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project readFromParcel(source); 4569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 4609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Return a list of the services that are currently running. 4619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 4629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param maxNum The maximum number of entries to return in the list. The 4639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * actual number returned may be smaller, depending on how many services 4649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * are running. 4659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 4669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return Returns a list of RunningServiceInfo records describing each of 4679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * the running tasks. 4689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 4699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public List<RunningServiceInfo> getRunningServices(int maxNum) 4709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project throws SecurityException { 4719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project try { 4729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return (List<RunningServiceInfo>)ActivityManagerNative.getDefault() 4739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project .getServices(maxNum, 0); 4749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } catch (RemoteException e) { 4759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project // System dead, we will be dead too soon! 4769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return null; 4779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 4799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 4809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 481dd9b82c283815747b75fe4434c65e4b6c9c9b54fDianne Hackborn * Returns a PendingIntent you can start to show a control panel for the 482dd9b82c283815747b75fe4434c65e4b6c9c9b54fDianne Hackborn * given running service. If the service does not have a control panel, 483dd9b82c283815747b75fe4434c65e4b6c9c9b54fDianne Hackborn * null is returned. 484dd9b82c283815747b75fe4434c65e4b6c9c9b54fDianne Hackborn */ 485dd9b82c283815747b75fe4434c65e4b6c9c9b54fDianne Hackborn public PendingIntent getRunningServiceControlPanel(ComponentName service) 486dd9b82c283815747b75fe4434c65e4b6c9c9b54fDianne Hackborn throws SecurityException { 487dd9b82c283815747b75fe4434c65e4b6c9c9b54fDianne Hackborn try { 488dd9b82c283815747b75fe4434c65e4b6c9c9b54fDianne Hackborn return ActivityManagerNative.getDefault() 489dd9b82c283815747b75fe4434c65e4b6c9c9b54fDianne Hackborn .getRunningServiceControlPanel(service); 490dd9b82c283815747b75fe4434c65e4b6c9c9b54fDianne Hackborn } catch (RemoteException e) { 491dd9b82c283815747b75fe4434c65e4b6c9c9b54fDianne Hackborn // System dead, we will be dead too soon! 492dd9b82c283815747b75fe4434c65e4b6c9c9b54fDianne Hackborn return null; 493dd9b82c283815747b75fe4434c65e4b6c9c9b54fDianne Hackborn } 494dd9b82c283815747b75fe4434c65e4b6c9c9b54fDianne Hackborn } 495dd9b82c283815747b75fe4434c65e4b6c9c9b54fDianne Hackborn 496dd9b82c283815747b75fe4434c65e4b6c9c9b54fDianne Hackborn /** 4979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Information you can retrieve about the available memory through 4989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link ActivityManager#getMemoryInfo}. 4999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 5009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static class MemoryInfo implements Parcelable { 5019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 5029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The total available memory on the system. This number should not 5039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * be considered absolute: due to the nature of the kernel, a significant 5049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * portion of this memory is actually in use and needed for the overall 5059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * system to run well. 5069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 5079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public long availMem; 5089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 5099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 5109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The threshold of {@link #availMem} at which we consider memory to be 5119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * low and start killing background services and other non-extraneous 5129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * processes. 5139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 5149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public long threshold; 5159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 5169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 5179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Set to true if the system considers itself to currently be in a low 5189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * memory situation. 5199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 5209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public boolean lowMemory; 5219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 5229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public MemoryInfo() { 5239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 5249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 5259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public int describeContents() { 5269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return 0; 5279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 5289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 5299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void writeToParcel(Parcel dest, int flags) { 5309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project dest.writeLong(availMem); 5319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project dest.writeLong(threshold); 5329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project dest.writeInt(lowMemory ? 1 : 0); 5339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 5349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 5359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void readFromParcel(Parcel source) { 5369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project availMem = source.readLong(); 5379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project threshold = source.readLong(); 5389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project lowMemory = source.readInt() != 0; 5399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 5409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 5419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final Creator<MemoryInfo> CREATOR 5429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project = new Creator<MemoryInfo>() { 5439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public MemoryInfo createFromParcel(Parcel source) { 5449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return new MemoryInfo(source); 5459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 5469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public MemoryInfo[] newArray(int size) { 5479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return new MemoryInfo[size]; 5489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 5499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project }; 5509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 5519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private MemoryInfo(Parcel source) { 5529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project readFromParcel(source); 5539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 5549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 5559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 5569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void getMemoryInfo(MemoryInfo outInfo) { 5579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project try { 5589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ActivityManagerNative.getDefault().getMemoryInfo(outInfo); 5599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } catch (RemoteException e) { 5609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 5619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 5629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 5639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 5649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @hide 5659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 5669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public boolean clearApplicationUserData(String packageName, IPackageDataObserver observer) { 5679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project try { 5689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return ActivityManagerNative.getDefault().clearApplicationUserData(packageName, 5699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project observer); 5709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } catch (RemoteException e) { 5719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return false; 5729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 5739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 5749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 5759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 5769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Information you can retrieve about any processes that are in an error condition. 5779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 5789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static class ProcessErrorStateInfo implements Parcelable { 5799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 5809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Condition codes 5819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 5829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final int NO_ERROR = 0; 5839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final int CRASHED = 1; 5849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final int NOT_RESPONDING = 2; 5859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 5869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 5879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The condition that the process is in. 5889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 5899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public int condition; 5909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 5919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 5929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The process name in which the crash or error occurred. 5939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 5949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public String processName; 5959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 5969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 5979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The pid of this process; 0 if none 5989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 5999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public int pid; 6009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 6019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 6029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The kernel user-ID that has been assigned to this process; 6039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * currently this is not a unique ID (multiple applications can have 6049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * the same uid). 6059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 6069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public int uid; 6079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 6089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 6099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The tag that was provided when the process crashed. 6109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 6119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public String tag; 6129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 6139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 6149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * A short message describing the error condition. 6159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 6169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public String shortMsg; 6179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 6189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 6199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * A long message describing the error condition. 6209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 6219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public String longMsg; 6229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 6239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 6249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Raw data about the crash (typically a stack trace). 6259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 6269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public byte[] crashData; 6279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 6289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public ProcessErrorStateInfo() { 6299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 6309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 6319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public int describeContents() { 6329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return 0; 6339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 6349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 6359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void writeToParcel(Parcel dest, int flags) { 6369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project dest.writeInt(condition); 6379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project dest.writeString(processName); 6389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project dest.writeInt(pid); 6399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project dest.writeInt(uid); 6409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project dest.writeString(tag); 6419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project dest.writeString(shortMsg); 6429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project dest.writeString(longMsg); 6439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project dest.writeInt(crashData == null ? -1 : crashData.length); 6449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project dest.writeByteArray(crashData); 6459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 6469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 6479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void readFromParcel(Parcel source) { 6489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project condition = source.readInt(); 6499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project processName = source.readString(); 6509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project pid = source.readInt(); 6519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project uid = source.readInt(); 6529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project tag = source.readString(); 6539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project shortMsg = source.readString(); 6549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project longMsg = source.readString(); 6559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project int cdLen = source.readInt(); 6569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project if (cdLen == -1) { 6579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project crashData = null; 6589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } else { 6599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project crashData = new byte[cdLen]; 6609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project source.readByteArray(crashData); 6619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 6629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 6639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 6649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final Creator<ProcessErrorStateInfo> CREATOR = 6659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project new Creator<ProcessErrorStateInfo>() { 6669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public ProcessErrorStateInfo createFromParcel(Parcel source) { 6679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return new ProcessErrorStateInfo(source); 6689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 6699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public ProcessErrorStateInfo[] newArray(int size) { 6709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return new ProcessErrorStateInfo[size]; 6719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 6729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project }; 6739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 6749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private ProcessErrorStateInfo(Parcel source) { 6759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project readFromParcel(source); 6769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 6779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 6789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 6799066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 6809066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Returns a list of any processes that are currently in an error condition. The result 6819066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * will be null if all processes are running properly at this time. 6829066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 6839066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return Returns a list of ProcessErrorStateInfo records, or null if there are no 6849066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * current error conditions (it will not return an empty list). This list ordering is not 6859066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * specified. 6869066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 6879066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public List<ProcessErrorStateInfo> getProcessesInErrorState() { 6889066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project try { 6899066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return ActivityManagerNative.getDefault().getProcessesInErrorState(); 6909066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } catch (RemoteException e) { 6919066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return null; 6929066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 6939066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 6949066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 6959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 6969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Information you can retrieve about a running process. 6979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 6989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static class RunningAppProcessInfo implements Parcelable { 6999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 7009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The name of the process that this object is associated with 7019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 7029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public String processName; 7039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 7049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 7059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The pid of this process; 0 if none 7069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 7079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public int pid; 7089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 709eb034652c2037a47ebfd99779e8383bb8bb528afDianne Hackborn /** 710eb034652c2037a47ebfd99779e8383bb8bb528afDianne Hackborn * The user id of this process. 711eb034652c2037a47ebfd99779e8383bb8bb528afDianne Hackborn */ 712eb034652c2037a47ebfd99779e8383bb8bb528afDianne Hackborn public int uid; 713eb034652c2037a47ebfd99779e8383bb8bb528afDianne Hackborn 7149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public String pkgList[]; 7159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 7169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 7179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Constant for {@link #importance}: this process is running the 7189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * foreground UI. 7199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 7209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final int IMPORTANCE_FOREGROUND = 100; 7219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 7229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 7239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Constant for {@link #importance}: this process is running something 7249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * that is considered to be actively visible to the user. 7259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 7269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final int IMPORTANCE_VISIBLE = 200; 7279066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 7289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 7299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Constant for {@link #importance}: this process is contains services 7309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * that should remain running. 7319066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 7329066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final int IMPORTANCE_SERVICE = 300; 7339066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 7349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 7359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Constant for {@link #importance}: this process process contains 7369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * background code that is expendable. 7379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 7389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final int IMPORTANCE_BACKGROUND = 400; 7399066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 7409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 7419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Constant for {@link #importance}: this process is empty of any 7429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * actively running code. 7439066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 7449066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final int IMPORTANCE_EMPTY = 500; 7459066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 7469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 7479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * The relative importance level that the system places on this 7489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * process. May be one of {@link #IMPORTANCE_FOREGROUND}, 7499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link #IMPORTANCE_VISIBLE}, {@link #IMPORTANCE_SERVICE}, 7509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link #IMPORTANCE_BACKGROUND}, or {@link #IMPORTANCE_EMPTY}. These 7519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * constants are numbered so that "more important" values are always 7529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * smaller than "less important" values. 7539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 7549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public int importance; 7559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 7569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 7579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * An additional ordering within a particular {@link #importance} 7589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * category, providing finer-grained information about the relative 7599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * utility of processes within a category. This number means nothing 7609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * except that a smaller values are more recently used (and thus 7619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * more important). Currently an LRU value is only maintained for 7629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * the {@link #IMPORTANCE_BACKGROUND} category, though others may 7639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * be maintained in the future. 7649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 7659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public int lru; 7669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 767dd9b82c283815747b75fe4434c65e4b6c9c9b54fDianne Hackborn /** 768dd9b82c283815747b75fe4434c65e4b6c9c9b54fDianne Hackborn * Constant for {@link #importanceReasonCode}: nothing special has 769dd9b82c283815747b75fe4434c65e4b6c9c9b54fDianne Hackborn * been specified for the reason for this level. 770dd9b82c283815747b75fe4434c65e4b6c9c9b54fDianne Hackborn */ 771dd9b82c283815747b75fe4434c65e4b6c9c9b54fDianne Hackborn public static final int REASON_UNKNOWN = 0; 772dd9b82c283815747b75fe4434c65e4b6c9c9b54fDianne Hackborn 773dd9b82c283815747b75fe4434c65e4b6c9c9b54fDianne Hackborn /** 774dd9b82c283815747b75fe4434c65e4b6c9c9b54fDianne Hackborn * Constant for {@link #importanceReasonCode}: one of the application's 775dd9b82c283815747b75fe4434c65e4b6c9c9b54fDianne Hackborn * content providers is being used by another process. The pid of 776dd9b82c283815747b75fe4434c65e4b6c9c9b54fDianne Hackborn * the client process is in {@link #importanceReasonPid} and the 777dd9b82c283815747b75fe4434c65e4b6c9c9b54fDianne Hackborn * target provider in this process is in 778dd9b82c283815747b75fe4434c65e4b6c9c9b54fDianne Hackborn * {@link #importanceReasonComponent}. 779dd9b82c283815747b75fe4434c65e4b6c9c9b54fDianne Hackborn */ 780dd9b82c283815747b75fe4434c65e4b6c9c9b54fDianne Hackborn public static final int REASON_PROVIDER_IN_USE = 1; 781dd9b82c283815747b75fe4434c65e4b6c9c9b54fDianne Hackborn 782dd9b82c283815747b75fe4434c65e4b6c9c9b54fDianne Hackborn /** 783dd9b82c283815747b75fe4434c65e4b6c9c9b54fDianne Hackborn * Constant for {@link #importanceReasonCode}: one of the application's 784dd9b82c283815747b75fe4434c65e4b6c9c9b54fDianne Hackborn * content providers is being used by another process. The pid of 785dd9b82c283815747b75fe4434c65e4b6c9c9b54fDianne Hackborn * the client process is in {@link #importanceReasonPid} and the 786dd9b82c283815747b75fe4434c65e4b6c9c9b54fDianne Hackborn * target provider in this process is in 787dd9b82c283815747b75fe4434c65e4b6c9c9b54fDianne Hackborn * {@link #importanceReasonComponent}. 788dd9b82c283815747b75fe4434c65e4b6c9c9b54fDianne Hackborn */ 789dd9b82c283815747b75fe4434c65e4b6c9c9b54fDianne Hackborn public static final int REASON_SERVICE_IN_USE = 2; 790dd9b82c283815747b75fe4434c65e4b6c9c9b54fDianne Hackborn 791dd9b82c283815747b75fe4434c65e4b6c9c9b54fDianne Hackborn /** 792dd9b82c283815747b75fe4434c65e4b6c9c9b54fDianne Hackborn * The reason for {@link #importance}, if any. 793dd9b82c283815747b75fe4434c65e4b6c9c9b54fDianne Hackborn */ 794dd9b82c283815747b75fe4434c65e4b6c9c9b54fDianne Hackborn public int importanceReasonCode; 795dd9b82c283815747b75fe4434c65e4b6c9c9b54fDianne Hackborn 796dd9b82c283815747b75fe4434c65e4b6c9c9b54fDianne Hackborn /** 797dd9b82c283815747b75fe4434c65e4b6c9c9b54fDianne Hackborn * For the specified values of {@link #importanceReasonCode}, this 798dd9b82c283815747b75fe4434c65e4b6c9c9b54fDianne Hackborn * is the process ID of the other process that is a client of this 799dd9b82c283815747b75fe4434c65e4b6c9c9b54fDianne Hackborn * process. This will be 0 if no other process is using this one. 800dd9b82c283815747b75fe4434c65e4b6c9c9b54fDianne Hackborn */ 801dd9b82c283815747b75fe4434c65e4b6c9c9b54fDianne Hackborn public int importanceReasonPid; 802dd9b82c283815747b75fe4434c65e4b6c9c9b54fDianne Hackborn 803dd9b82c283815747b75fe4434c65e4b6c9c9b54fDianne Hackborn /** 804dd9b82c283815747b75fe4434c65e4b6c9c9b54fDianne Hackborn * For the specified values of {@link #importanceReasonCode}, this 805dd9b82c283815747b75fe4434c65e4b6c9c9b54fDianne Hackborn * is the name of the component that is being used in this process. 806dd9b82c283815747b75fe4434c65e4b6c9c9b54fDianne Hackborn */ 807dd9b82c283815747b75fe4434c65e4b6c9c9b54fDianne Hackborn public ComponentName importanceReasonComponent; 808dd9b82c283815747b75fe4434c65e4b6c9c9b54fDianne Hackborn 8099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public RunningAppProcessInfo() { 8109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project importance = IMPORTANCE_FOREGROUND; 811dd9b82c283815747b75fe4434c65e4b6c9c9b54fDianne Hackborn importanceReasonCode = REASON_UNKNOWN; 8129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 8139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 8149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public RunningAppProcessInfo(String pProcessName, int pPid, String pArr[]) { 8159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project processName = pProcessName; 8169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project pid = pPid; 8179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project pkgList = pArr; 8189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 8199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 8209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public int describeContents() { 8219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return 0; 8229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 8239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 8249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void writeToParcel(Parcel dest, int flags) { 8259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project dest.writeString(processName); 8269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project dest.writeInt(pid); 827eb034652c2037a47ebfd99779e8383bb8bb528afDianne Hackborn dest.writeInt(uid); 8289066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project dest.writeStringArray(pkgList); 8299066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project dest.writeInt(importance); 8309066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project dest.writeInt(lru); 831dd9b82c283815747b75fe4434c65e4b6c9c9b54fDianne Hackborn dest.writeInt(importanceReasonCode); 832dd9b82c283815747b75fe4434c65e4b6c9c9b54fDianne Hackborn dest.writeInt(importanceReasonPid); 833dd9b82c283815747b75fe4434c65e4b6c9c9b54fDianne Hackborn ComponentName.writeToParcel(importanceReasonComponent, dest); 8349066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 8359066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 8369066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void readFromParcel(Parcel source) { 8379066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project processName = source.readString(); 8389066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project pid = source.readInt(); 839eb034652c2037a47ebfd99779e8383bb8bb528afDianne Hackborn uid = source.readInt(); 8409066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project pkgList = source.readStringArray(); 8419066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project importance = source.readInt(); 8429066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project lru = source.readInt(); 843dd9b82c283815747b75fe4434c65e4b6c9c9b54fDianne Hackborn importanceReasonCode = source.readInt(); 844dd9b82c283815747b75fe4434c65e4b6c9c9b54fDianne Hackborn importanceReasonPid = source.readInt(); 845dd9b82c283815747b75fe4434c65e4b6c9c9b54fDianne Hackborn importanceReasonComponent = ComponentName.readFromParcel(source); 8469066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 8479066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 8489066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public static final Creator<RunningAppProcessInfo> CREATOR = 8499066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project new Creator<RunningAppProcessInfo>() { 8509066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public RunningAppProcessInfo createFromParcel(Parcel source) { 8519066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return new RunningAppProcessInfo(source); 8529066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 8539066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public RunningAppProcessInfo[] newArray(int size) { 8549066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return new RunningAppProcessInfo[size]; 8559066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 8569066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project }; 8579066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 8589066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project private RunningAppProcessInfo(Parcel source) { 8599066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project readFromParcel(source); 8609066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 8619066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 8629066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 8639066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 8649066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Returns a list of application processes that are running on the device. 8659066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 8669066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @return Returns a list of RunningAppProcessInfo records, or null if there are no 8679066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * running processes (it will not return an empty list). This list ordering is not 8689066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * specified. 8699066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 8709066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public List<RunningAppProcessInfo> getRunningAppProcesses() { 8719066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project try { 8729066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return ActivityManagerNative.getDefault().getRunningAppProcesses(); 8739066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } catch (RemoteException e) { 8749066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return null; 8759066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 8769066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 8779066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 8789066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 8794f21c4cf077cfee5b35a56703618115614bc40f2Dianne Hackborn * Return information about the memory usage of one or more processes. 8804f21c4cf077cfee5b35a56703618115614bc40f2Dianne Hackborn * 8814f21c4cf077cfee5b35a56703618115614bc40f2Dianne Hackborn * @param pids The pids of the processes whose memory usage is to be 8824f21c4cf077cfee5b35a56703618115614bc40f2Dianne Hackborn * retrieved. 8834f21c4cf077cfee5b35a56703618115614bc40f2Dianne Hackborn * @return Returns an array of memory information, one for each 8844f21c4cf077cfee5b35a56703618115614bc40f2Dianne Hackborn * requested pid. 8854f21c4cf077cfee5b35a56703618115614bc40f2Dianne Hackborn */ 8864f21c4cf077cfee5b35a56703618115614bc40f2Dianne Hackborn public Debug.MemoryInfo[] getProcessMemoryInfo(int[] pids) { 8874f21c4cf077cfee5b35a56703618115614bc40f2Dianne Hackborn try { 8884f21c4cf077cfee5b35a56703618115614bc40f2Dianne Hackborn return ActivityManagerNative.getDefault().getProcessMemoryInfo(pids); 8894f21c4cf077cfee5b35a56703618115614bc40f2Dianne Hackborn } catch (RemoteException e) { 8904f21c4cf077cfee5b35a56703618115614bc40f2Dianne Hackborn return null; 8914f21c4cf077cfee5b35a56703618115614bc40f2Dianne Hackborn } 8924f21c4cf077cfee5b35a56703618115614bc40f2Dianne Hackborn } 8934f21c4cf077cfee5b35a56703618115614bc40f2Dianne Hackborn 8944f21c4cf077cfee5b35a56703618115614bc40f2Dianne Hackborn /** 8959066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Have the system perform a force stop of everything associated with 8969066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * the given application package. All processes that share its uid 8979066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * will be killed, all services it has running stopped, all activities 8989066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * removed, etc. In addition, a {@link Intent#ACTION_PACKAGE_RESTARTED} 8999066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * broadcast will be sent, so that any of its registered alarms can 9009066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * be stopped, notifications removed, etc. 9019066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 9029066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * <p>You must hold the permission 9039066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * {@link android.Manifest.permission#RESTART_PACKAGES} to be able to 9049066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * call this method. 9059066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * 9069066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * @param packageName The name of the package to be stopped. 9079066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 9089066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public void restartPackage(String packageName) { 9099066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project try { 9109066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project ActivityManagerNative.getDefault().restartPackage(packageName); 9119066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } catch (RemoteException e) { 9129066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 9139066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 9149066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 9159066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project /** 9169066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project * Get the device configuration attributes. 9179066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project */ 9189066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project public ConfigurationInfo getDeviceConfigurationInfo() { 9199066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project try { 9209066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return ActivityManagerNative.getDefault().getDeviceConfigurationInfo(); 9219066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } catch (RemoteException e) { 9229066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 9239066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project return null; 9249066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project } 9259066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project 9269066cfe9886ac131c34d59ed0e2d287b0e3c0087The Android Open Source Project} 927