1 package com.xtremelabs.robolectric.shadows; 2 3 import android.app.ActivityManager; 4 import com.xtremelabs.robolectric.internal.Implementation; 5 import com.xtremelabs.robolectric.internal.Implements; 6 7 import java.util.ArrayList; 8 import java.util.List; 9 10 /** 11 * Shadow for the Android {@code ActivityManager} class. 12 */ 13 @SuppressWarnings({"UnusedDeclaration"}) 14 @Implements(ActivityManager.class) 15 public class ShadowActivityManager { 16 17 private List<ActivityManager.RunningTaskInfo> tasks = 18 new ArrayList<ActivityManager.RunningTaskInfo>(); 19 20 private List<ActivityManager.RunningAppProcessInfo> processes = 21 new ArrayList<ActivityManager.RunningAppProcessInfo>(); 22 23 private String backgroundPackage; 24 private ActivityManager.MemoryInfo memoryInfo; 25 26 @Implementation getRunningTasks(int maxNum)27 public List<ActivityManager.RunningTaskInfo> getRunningTasks(int maxNum) { 28 return tasks; 29 } 30 31 @Implementation getRunningAppProcesses()32 public List<ActivityManager.RunningAppProcessInfo> getRunningAppProcesses() { 33 return processes; 34 } 35 36 @Implementation killBackgroundProcesses(String packageName)37 public void killBackgroundProcesses(String packageName) { 38 backgroundPackage = packageName; 39 } 40 41 @Implementation getMemoryInfo(ActivityManager.MemoryInfo outInfo)42 public void getMemoryInfo(ActivityManager.MemoryInfo outInfo) { 43 if (memoryInfo != null) { 44 outInfo.lowMemory = memoryInfo.lowMemory; 45 } 46 } 47 48 /** 49 * Non-Android accessor to set the list of running tasks. 50 * @param tasks 51 */ setTasks(List<ActivityManager.RunningTaskInfo> tasks)52 public void setTasks(List<ActivityManager.RunningTaskInfo> tasks) { 53 this.tasks = tasks; 54 } 55 56 /** 57 * Non-Android accessor to set the list of running processes. 58 * @param processes 59 */ setProcesses( List<ActivityManager.RunningAppProcessInfo> processes )60 public void setProcesses( List<ActivityManager.RunningAppProcessInfo> processes ) { 61 this.processes = processes; 62 } 63 64 /** 65 * Non-Android accessor, for use in assertions. 66 */ getBackgroundPackage()67 public String getBackgroundPackage() { 68 return backgroundPackage; 69 } 70 setMemoryInfo(ActivityManager.MemoryInfo memoryInfo)71 public void setMemoryInfo(ActivityManager.MemoryInfo memoryInfo) { 72 this.memoryInfo = memoryInfo; 73 } 74 75 @Implements(ActivityManager.MemoryInfo.class) 76 public static class ShadowMemoryInfo { 77 public boolean lowMemory; 78 setLowMemory(boolean lowMemory)79 public void setLowMemory(boolean lowMemory) { 80 this.lowMemory = lowMemory; 81 } 82 } 83 } 84