현재 실행 중인 프로세스 목록 가져오기

2010. 3. 10. 08:46안드로이드 개발

복잡하게 생각할 것 없이 프로세스 목록을 보여주는 shell command 명령인 "ps"를 실행시켜서 프로세스 목록을 받아오면 된다. 문제는 kill 명령은 권한 문제로 인해 사용할 수 없는 것 같으니 다른 대안을 찾아야 할 듯..

try
{
       Process ps = Runtime.getRuntime().exec("ps");
       byte[] msg = new byte[128];
       int len;
       String Value = "";
       while((len = ps.getInputStream().read(msg)) > 0)
      {
            Value = Value + new String(msg, 0, len);
       }
       
       Toast.makeText(this, Value, Toast.LENGTH_LONG).show();
}
catch(Exception e)
{
       
}

다음과 같이 ActivityManager를 이용하여 실행 중인 프로세스 정보를 가져올 수도 있다. 리스트에서 특정 프로세스를 선택하면 해당 프로세스의 이름과 pid, uid를 표시해준다.

ActivityManager activityManager = (ActivityManager)this.getSystemService(ACTIVITY_SERVICE );
final List<ActivityManager.RunningAppProcessInfo> appList = activityManager.getRunningAppProcesses();
final ArrayAdapter<ActivityManager.RunningAppProcessInfo> adaptedAppList = new ArrayAdapter<ActivityManager.RunningAppProcessInfo>(this,
    android.R.layout.simple_list_item_single_choice, appList);
  
listView = getListView();
  
listView.setAdapter(adaptedAppList);
listView.setChoiceMode(ListView.CHOICE_MODE_SINGLE);
listView.setOnItemClickListener(new AdapterView.OnItemClickListener() {

   @Override
   public void onItemClick(AdapterView<?> arg0, View arg1, int arg2,
     long arg3) {
    // TODO Auto-generated method stub
    ActivityManager.RunningAppProcessInfo runApp = adaptedAppList.getItem(arg2);
    String name = runApp.processName+"<"+runApp.pid+">"+runApp.uid;
    Toast.makeText(this, name, Toast.LENGTH_SHORT).show();

   }
   
  });