2010-01-28 3 views

ответ

0

Короткий ответ: вы не можете — для этого нет API.

Чуть более точный ответ: вы может быть в состоянии выполнить команду как ps, чтобы получить основную информацию о процессе, но это зависит от того, позволяет ли конкретное устройство, выполнить консольные команды, как это и имеет ps двоичную установлен ,

+0

Тогда как существуют все эти приложения диспетчера задач? –

+0

Я предполагаю, что они используют непубличные API, как в вашем ответе. –

2

Быстрый поиск в Google предоставил мне this article. Основы являются:

В вашем файле манифеста добавьте разрешение:

<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)); 
} 

Пожалуйста, обратите внимание, что я не пробовал ... это только с того сайта, с которым я связан выше.

+0

Я не вижу, что IActivityManager указан в документах, поэтому я думаю, что это старый код. – Richard

+2

Я отправил это 9 месяцев назад ... все меняется. –

2
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"; 
    } 

Etcetera

Смежные вопросы