
org.robolectric.shadows.ShadowActivityManager Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of framework Show documentation
Show all versions of framework Show documentation
An alternative Android testing framework.
The newest version!
package org.robolectric.shadows;
import android.app.ActivityManager;
import android.app.IActivityManager;
import android.content.pm.ConfigurationInfo;
import android.os.Process;
import java.util.List;
import java.util.concurrent.CopyOnWriteArrayList;
import org.robolectric.RuntimeEnvironment;
import org.robolectric.annotation.Implementation;
import org.robolectric.annotation.Implements;
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 tasks = new CopyOnWriteArrayList<>();
private final List services = new CopyOnWriteArrayList<>();
private List processes = new CopyOnWriteArrayList<>();
public ShadowActivityManager() {
ActivityManager.RunningAppProcessInfo processInfo = new ActivityManager.RunningAppProcessInfo();
processInfo.pid = Process.myPid();
processInfo.uid = Process.myUid();
processInfo.processName = RuntimeEnvironment.application.getPackageName();
processInfo.pkgList = new String[] {RuntimeEnvironment.application.getPackageName()};
processes.add(processInfo);
}
@Implementation
public int getMemoryClass() {
return memoryClass;
}
@Implementation
public static boolean isUserAMonkey() {
return false;
}
@Implementation
public List getRunningTasks(int maxNum) {
return tasks;
}
@Implementation
public List getRunningServices(int maxNum) {
return services;
}
@Implementation
public List getRunningAppProcesses() {
// This method is explicitly documented not to return an empty list
if (processes.isEmpty()) {
return null;
}
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 tasks) {
this.tasks.clear();
this.tasks.addAll(tasks);
}
/**
* @param services List of running services.
*/
public void setServices(List services) {
this.services.clear();
this.services.addAll(services);
}
/**
* @param processes List of running processes.
*/
public void setProcesses(List 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);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy