我想开发一个类似应用程序的任务管理器,我想在列表视图中显示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 );
}
}
答案 0 :(得分:1)
您应开始,查看RunningServiceInfo可用的内容......您可以将其用于ListView的数据。
如果这不具备您所需的功能,那么您可能需要查看android源代码中打包的原始电池应用程序的来源。要看的好分支是版本2.3.3。
始终使用Android源代码将为您节省很多麻烦。