package org.robolectric.shadows; import android.app.ActivityManager; import android.app.IActivityManager; import android.content.pm.ConfigurationInfo; import org.robolectric.annotation.Implementation; import org.robolectric.annotation.Implements; import java.util.ArrayList; import java.util.List; import org.robolectric.util.ReflectionHelpers; @Implements(ActivityManager.class) public class ShadowActivityManager { private int memoryClass = 16; private String backgroundPackage; private ActivityManager.MemoryInfo memoryInfo; private final List<ActivityManager.RunningTaskInfo> tasks = new ArrayList<>(); private final List<ActivityManager.RunningServiceInfo> services = new ArrayList<>(); private final List<ActivityManager.RunningAppProcessInfo> processes = new ArrayList<>(); @Implementation public int getMemoryClass() { return memoryClass; } @Implementation public static boolean isUserAMonkey() { return false; } @Implementation public List<ActivityManager.RunningTaskInfo> getRunningTasks(int maxNum) { return tasks; } @Implementation public List<ActivityManager.RunningServiceInfo> getRunningServices(int maxNum) { return services; } @Implementation public List<ActivityManager.RunningAppProcessInfo> getRunningAppProcesses() { return processes; } @Implementation public void killBackgroundProcesses(String packageName) { backgroundPackage = packageName; } @Implementation public void getMemoryInfo(ActivityManager.MemoryInfo outInfo) { if (memoryInfo != null) { outInfo.availMem = memoryInfo.availMem; outInfo.lowMemory = memoryInfo.lowMemory; outInfo.threshold = memoryInfo.threshold; outInfo.totalMem = memoryInfo.totalMem; } } @Implementation public android.content.pm.ConfigurationInfo getDeviceConfigurationInfo() { return new ConfigurationInfo(); } /** * @param tasks List of running tasks. */ public void setTasks(List<ActivityManager.RunningTaskInfo> tasks) { this.tasks.clear(); this.tasks.addAll(tasks); } /** * @param services List of running services. */ public void setServices(List<ActivityManager.RunningServiceInfo> services) { this.services.clear(); this.services.addAll(services); } /** * @param processes List of running processes. */ public void setProcesses(List<ActivityManager.RunningAppProcessInfo> processes) { this.processes.clear(); this.processes.addAll(processes); } /** * @return Get the package name of the last background processes killed. */ public String getBackgroundPackage() { return backgroundPackage; } /** * @param memoryClass Set the application's memory class. */ public void setMemoryClass(int memoryClass) { this.memoryClass = memoryClass; } /** * @param memoryInfo Set the application's memory info. */ public void setMemoryInfo(ActivityManager.MemoryInfo memoryInfo) { this.memoryInfo = memoryInfo; } @Implementation public static IActivityManager getService() { return ReflectionHelpers.createNullProxy(IActivityManager.class); } }