例如,Instagram应用程序正在运行。我希望在我的后台运行应用程序中运行应用程序名称。
答案 0 :(得分:0)
没有默认的方法,你需要外部库来实现这个功能。我已经在我的应用程序中使用 jaredrummler android库实现了这一次。一个简单的用法如下所示
添加到草图
dependencies {
...
compile 'com.jaredrummler:android-processes:1.1.1'
}
创建包装器类模型
如果要存储有关正在运行的进程的基本信息,以便在列表视图或其他地方使用它,可以创建如下所示的包装器模型
...
import android.graphics.drawable.Drawable;
public class RunningApplication {
public String processName, pid = "" ;
public long startTime = 0 ;
public Drawable processIcon = null ;
public RunningApplication(String name, long start, String pid, Drawable icon) {
this.processName = name ;
this.startTime = start ;
this.pid = pid ;
this.processIcon = icon ;
}
public getProcessName() {
return processname ;
}
...
}
在课堂上使用
...
import android.content.pm.ApplicationInfo;
import android.content.pm.PackageInfo;
import android.content.pm.PackageManager;
import com.jaredrummler.android.processes.AndroidProcesses;
import com.jaredrummler.android.processes.models.AndroidAppProcess;
import com.jaredrummler.android.processes.models.Stat;
import com.jaredrummler.android.processes.models.Statm;
class YourClass extends Activity {
List<RunningApplication> runningApplicationList = new ArrayList<>();
...
public void getRunningApps() {
List<AndroidAppProcess> processes = AndroidProcesses.getRunningAppProcesses();
PackageManager pm = getPackageManager();
for (AndroidAppProcess pro : processes) {
try {
String proccessname = pro.name;
Stat stat = pro.stat();
int pid = stat.getPid();
int parentProccessId = stat.ppid();
long startTime = stat.stime();
int policy = stat.policy();
char state = stat.state();
Statm statm = pro.statm();
long totalSizeofProccess = statm.getSize();
long residentSetSize = statm.getResidentSetSize();
PackageInfo packageInfo = pro.getPackageInfo(basecontext, 0);
//get the app name
String appName = packageInfo.applicationInfo.loadLabel(pm).toString();
//Get the app icon
Drawable appIcon = packageInfo.applicationInfo.loadIcon(pm);
//Add it to your list of running app
RunningApplication ra = new RunningApplication(appName,startTime,pid,appIcon);
runningApplicationList.add(ra);
} catch (Exception ex) {
Log.e("APPNAME.CONTEXT",e.getMessage());
}
}
}
}
...
注意:我使用上面的代码已经超过一年了,但当时它的工作完全正常并且没有经过测试。您可以搜索 jaredrummler 库以获取更多信息和可能的更新