关于PackageManager和ActivityManager的使用。
ActivityManager.RunningServiceInfo类:封装了正在运行的服务信息
List<ActivityManager.RunningServiceInfo> listRn=am.getRunningServices(40);
功能:返回所有正在运行的服务
参数: maxNum 代表我们希望返回的服务数目大小,一般给个稍大的值即可, 例如,50 。
ActivityManager.RunningServiceInfo 类
常用字段:
long activeSince 服务第一次被激活的时间, 包括启动和绑定方式
int clientCount 如果该Service是通过Bind方法方式连接,则clientCount代表了service连接客户端的数目
int crashCount 服务运行期间,出现死机的次数
boolean foreground 若为true,则该服务在后台执行
int pid 如果不为0,表示该service所在的进程ID号( PS:为0的话我也不清楚 - - 求指点)
int uid 用户ID 类似于Linux的用户权限,例如root等
String process 进程名,默认是包名或者由属性android:process指定
ComponentName service 获得该Service的组件信息 包含了pkgname / servicename信息
PackageManger类
public abstract ApplicationInfo getApplicationInfo( String packageName, int flags)参数:packagename 包名
flags 该ApplicationInfo是此flags标记,通常可以直接赋予常数0即可
功能:返回ApplicationInfo对象
package com.example.activitymanager;
import java.util.ArrayList;
import java.util.List;
import android.app.Activity;
import android.app.ActivityManager;
import android.app.ActivityManager.RunningServiceInfo;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.ListView;
import android.widget.TextView;
public class MainActivity extends Activity {
private ListView lv_main;
private List<ActivityManager.RunningServiceInfo> listRn;
private List list;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
// 先获取系统提供服务
ActivityManager am = (ActivityManager) getSystemService(ACTIVITY_SERVICE);
listRn = am.getRunningServices(40);
list = new ArrayList();
for (RunningServiceInfo rsi : listRn) {
list.add(rsi.service);
}
lv_main = (ListView) findViewById(R.id.lv_main);
lv_main.setAdapter(new lvAdapter());
}
private class lvAdapter extends BaseAdapter {
@Override
public int getCount() {
return list.size();
}
@Override
public Object getItem(int position) {
return null;
}
@Override
public long getItemId(int position) {
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
View view = View.inflate(MainActivity.this, R.layout.lv_item, null);
TextView tvService = (TextView) view.findViewById(R.id.tv_service);
tvService.setText(list.get(position) + "");
return view;
}
}
}