服务使用的内存

时间:2012-02-01 09:12:36

标签: android

我想开发一个类似应用程序的任务管理器,我想在列表视图中显示runnung服务列表和每个服务使用的内存。

我认为可以使用

获取正在运行的服务
ActivityManager am = (ActivityManager)this.getSystemService(Context.ACTIVITY_SERVICE);
List<RunningServiceInfo> procInfos = am.getRunningServices(maxNum);

但是如何在ListView中显示它们以及如何获取每个它们使用的内存? 我是一名机器人初学者,我希望任何人都能以详细的方式解释我...

我尝试了以下内容。我可以在logcat中看到服务名称等,但是apllication是强制关闭。

 package com.example.ServiceList;

 import java.util.List;

 import android.app.Activity;
 import android.app.ActivityManager;
 import android.app.ActivityManager.MemoryInfo;
 import android.app.ActivityManager.RunningAppProcessInfo;
 import android.app.ActivityManager.RunningServiceInfo;
 import android.content.Context;
 import android.os.Bundle;
 import android.util.Log;
 import android.widget.TextView;

 public class ServiceListActivity extends Activity {
 /** Called when the activity is first created. */
   int maxNum = 5;

   @Override
   public void onCreate(Bundle savedInstanceState) {
      super.onCreate(savedInstanceState);
      TextView tv = new TextView(this); 
      this.setContentView(tv);  

      android.os.Debug.MemoryInfo[] mInfo;
      int[] processid = null;

      ActivityManager am = (ActivityManager)this.getSystemService       (Context.ACTIVITY_SERVICE); 

    List<RunningServiceInfo> procInfos = am.getRunningServices(maxNum); 

     for(int i = 0; i < procInfos.size(); i++){

          tv.setText(tv.getText().toString()+ " " + "\n");
       Log.v("TaskMgr Stringe", procInfos.get(i).service.toString());
       Log.v("TaskMgr class name", procInfos.get(i).service.getClassName());
       processid[i]=procInfos.get(i).pid;
       String s = " "+processid[i];
       Log.v("TaskMgr process id",s );


       Log.v("TaskMgr process memory", am.getProcessMemoryInfo(processid[0]);
    }

       mInfo = am.getProcessMemoryInfo(processid);

       int dp= mInfo[0].dalvikPss;
       String s1= " " + dp;
       tv.setText(tv.getText().toString()+ " " + s1 );      
   }
 }

1 个答案:

答案 0 :(得分:1)

您应开始,查看RunningServiceInfo可用的内容......您可以将其用于ListView的数据。

如果这不具备您所需的功能,那么您可能需要查看android源代码中打包的原始电池应用程序的来源。要看的好分支是版本2.3.3。

始终使用Android源代码将为您节省很多麻烦。