Android 我想获取正在运行的应用程序的状态
应用程序状态示例:前台/后台 简短回答:你不能这样做-没有用于此的APIAndroid 我想获取正在运行的应用程序的状态,android,Android,应用程序状态示例:前台/后台 简短回答:你不能这样做-没有用于此的API 更准确的回答是:您可以运行类似于ps的命令来获取一些基本流程信息,但这取决于特定设备是否允许您执行类似的控制台命令,以及是否安装了ps二进制文件。谷歌快速搜索为我提供了帮助。基本原则是: 在清单文件中添加权限: <uses-permission id="android.permission.GET_TASKS"/> 在您的活动中,请执行以下操作: @SuppressWarnings("unchecke
更准确的回答是:您可以运行类似于
ps
的命令来获取一些基本流程信息,但这取决于特定设备是否允许您执行类似的控制台命令,以及是否安装了ps
二进制文件。谷歌快速搜索为我提供了帮助。基本原则是:
在清单文件中添加权限:
<uses-permission id="android.permission.GET_TASKS"/>
在您的活动中,请执行以下操作:
@SuppressWarnings("unchecked")
private void updateTaskList() {
/* Grab the Systems IActivityManager. */
IActivityManager myActivityManager = ActivityManagerNative.getDefault();
/* Will hold all the task"".toString()"" entries */
ArrayList<String> listEntries = new ArrayList<String>();
try {
int showLimit = 1;
/* Get all Tasks available (with limit set). */
List<IActivityManager.TaskInfo> allTasks = myActivityManager
.getTasks(showLimit, 0, null);
int i = 1;
/* Loop through all tasks returned. */
for (IActivityManager.TaskInfo aTask : allTasks) {
listEntries
.add("" + (i++) + ": "
+ aTask.baseActivity.getClassName() + " ID="
+ aTask.id);
}
} catch (DeadObjectException e) {
Log.e("TaskManager", e.getMessage(), e);
}
/* Display out listEntries */
setListAdapter(new ArrayAdapter<String>(this,
android.R.layout.simple_list_item_1_small, listEntries));
}
@SuppressWarnings(“未选中”)
私有void updateTaskList(){
/*抓住Systems IActivityManager*/
IActivityManager myActivityManager=ActivityManagerActive.getDefault();
/*将保存所有任务“.toString()”项*/
ArrayList listEntries=新建ArrayList();
试一试{
int showLimit=1;
/*获取所有可用任务(设置限制)*/
列出所有任务=myActivityManager
.getTasks(showLimit,0,null);
int i=1;
/*循环执行返回的所有任务*/
对于(IActivityManager.TaskInfo或任务:所有任务){
听众
.add(“+(i++)+”:“
+aTask.baseActivity.getClassName()+“ID=”
+aTask.id);
}
}catch(deadobjecte异常){
Log.e(“TaskManager”,e.getMessage(),e);
}
/*显示列表项*/
setListAdapter(新阵列适配器)(此,
android.R.layout.simple_list_item_1_small,listEntries));
}
请注意,我还没有试过这个。。。它只是来自我上面链接的那个站点。Context=this.getApplicationContext();
Context context = this.getApplicationContext();
ActivityManager mgr = (ActivityManager)context.getSystemService(ACTIVITY_SERVICE);
ConfigurationInfo config = mgr.getDeviceConfigurationInfo();
List<RunningAppProcessInfo> processes = mgr.getRunningAppProcesses();
List<RunningTaskInfo> tasks = mgr.getRunningTasks(100);
String text = "";
text += "Running tasks: \n";
for(Iterator i = tasks.iterator(); i.hasNext(); )
{
RunningTaskInfo p = (RunningTaskInfo)i.next();
text += p.baseActivity.flattenToString() + "\n";
}
ActivityManager mgr=(ActivityManager)context.getSystemService(ACTIVITY_服务);
ConfigurationInfo config=mgr.getDeviceConfiguration();
List processs=mgr.getRunningAppProcesses();
列表任务=经理getRunningTasks(100);
字符串文本=”;
text+=“正在运行的任务:\n”;
for(迭代器i=tasks.Iterator();i.hasNext();)
{
RunningTaskInfo p=(RunningTaskInfo)i.next();
text+=p.baseActivity.FlatterString()+“\n”;
}
等等那么这些任务管理器应用程序是如何存在的呢?我想它们使用的是非公共API,如您的回答所示。我在文档中没有看到IActivityManager,所以我认为这是旧代码。我在9个月前发布了此代码。。。事情变了。