132.s1-显示手机的运行进程数并显示可用内存

PackageManager包管理器

ActivityManager活动管理器(任务管理器)

读取总内存:totalMem = memoryInfo.totalMem;这个方法不支持低版本的手机,手机总内存的文件保存在/proc/meminfo文件中的第一条,读取这个可以获取到总内存,这个形式表示MemTotal: 344740 kB

布局文件activity_task_manager.xml

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >
    

    <TextView 
        style="@style/TitleStyle"
        android:text="进程管理"
        />
    <LinearLayout 
        android:layout_width="match_parent"
    	android:layout_height="wrap_content"
    	android:orientation="horizontal"
        >
        <TextView 
            android:id="@+id/tv_task_process_count"
            android:layout_width="wrap_content"
    		android:layout_height="wrap_content"
    		android:text="进行中进程1个"
    		android:layout_weight="1"
    		android:layout_marginLeft="5dp"
    		android:textColor="@color/black"
            />
		<TextView 
		    android:id="@+id/tv_task_memory"
            android:layout_width="wrap_content"
    		android:layout_height="wrap_content"
    		android:text="剩余/总内存"
    		android:layout_weight="1"
    		android:layout_marginLeft="5dp"
    		android:textColor="@color/black"
            />        
    </LinearLayout>
    <ListView 
        android:id="@+id/list_view"
        android:layout_width="match_parent"
    	android:layout_height="match_parent"
        ></ListView>
</LinearLayout>

页面逻辑文件TaskManagerActivity.java

package com.ldw.safe.Activity;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStreamReader;
import java.util.List;

import android.app.Activity;
import android.app.ActivityManager;
import android.app.ActivityManager.MemoryInfo;
import android.app.ActivityManager.RunningAppProcessInfo;
import android.os.Bundle;
import android.text.format.Formatter;
import android.widget.TextView;

import com.ldw.safe.R;
import com.ldw.safe.utils.SystemInfoUtils;
import com.lidroid.xutils.ViewUtils;
import com.lidroid.xutils.view.annotation.ViewInject;

/*
 * 进程管理
 */
public class TaskManagerActivity extends Activity {

	@ViewInject(R.id.tv_task_process_count)
	private TextView tv_task_process_count;
	@ViewInject(R.id.tv_task_memory)
	private TextView tv_task_memory;
	@ViewInject(R.id.list_view)
	private TextView list_view;
	private long availMem;
	private long totalMem;
	@Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        
        
        //初始化界面
        initUi();
        initData();
	}

	private void initData() {
		// TODO Auto-generated method stub
		
	}

	/*
	 * PackageManager包管理器
	 * ActivityManager活动管理器(任务管理器)
	 */
	//初始化界面
	private void initUi() {
		setContentView(R.layout.activity_task_manager);
		ViewUtils.inject(this);
		/*封装起来
		//PackageManager packageManager = getPackageManager();
		//得到进程管理者
		ActivityManager activityManager = (ActivityManager) getSystemService(ACTIVITY_SERVICE);
		//获取到当前运行的进程
		List<RunningAppProcessInfo> runningAppProcesses = activityManager.getRunningAppProcesses();
		//获取当前手机上面一共有多少进程
		int size = runningAppProcesses.size();
		//设置UI
		 * *
		 */
		//获取到总的进程的数据
		int processCount = SystemInfoUtils.getProcessCount(this);
		tv_task_process_count.setText("运行中的进程" + processCount + "个");
		
		//可用内存
		availMem = SystemInfoUtils.getAvailMem(this);
		//总内存
		totalMem = SystemInfoUtils.getTotalMem(this);
		
		tv_task_memory.setText("剩余/总内存:" + 
				Formatter.formatFileSize(TaskManagerActivity.this, availMem) + "/" +
						Formatter.formatFileSize(TaskManagerActivity.this, totalMem));
		
		/*代码整合到工具类中
		MemoryInfo memoryInfo = new MemoryInfo();
		//获取内存信息
		activityManager.getMemoryInfo(memoryInfo);
		
		availMem = memoryInfo.availMem;
		//这个代码不支持低版本手机
		totalMem = memoryInfo.totalMem;

		//手机总内存的文件保存在/proc/meminfo文件中的第一条,读取这个可以获取到总内存
		//这个形式表示MemTotal: 344740 kB
		
		// /proc/meminfo 配置文件的路径
			try {
				//创建一个输入流,配置文件的路径
				FileInputStream fis = new FileInputStream(new File("/proc/meminfo"));
				//读取文件内容
				BufferedReader reader = new BufferedReader(new InputStreamReader(
						fis));
				//读取第一行的信息
				String readLine = reader.readLine();

				StringBuffer sb = new StringBuffer();
				//获取到数字的内容
				for (char c : readLine.toCharArray()) {
					if (c >= '0' && c <= '9') {
						sb.append(c);
					}
				}
				
				totalMem = Long.parseLong(sb.toString()) * 1024;
				
			} catch (Exception e) {
				// TODO Auto-generated catch block
				e.printStackTrace();
			}
		
		tv_task_memory.setText("剩余/总内存:" + 
		Formatter.formatFileSize(TaskManagerActivity.this, availMem) + "/" +
				Formatter.formatFileSize(TaskManagerActivity.this, totalMem));
		*/
		
	}
}

使用的封装类工具SystemInfoUtils.java

package com.ldw.safe.utils;

import java.io.BufferedReader;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStreamReader;
import java.util.List;

import android.app.ActivityManager;
import android.app.ActivityManager.MemoryInfo;
import android.app.ActivityManager.RunningAppProcessInfo;
import android.app.ActivityManager.RunningServiceInfo;
import android.content.Context;

public class SystemInfoUtils {

	/*
	 * 检测服务是否运行
	 */
	public static boolean isServiceRunning(Context ctx, String serviceName){
		
		//利用context获取到系统的服务
		ActivityManager am = (ActivityManager) ctx.getSystemService(Context.ACTIVITY_SERVICE);
		//获取到正在运行的服务,100是返回服务的最大值
		List<RunningServiceInfo> runningService = am.getRunningServices(100);
		//遍历服务
		for(RunningServiceInfo runningServiceInfo:runningService){
			//获取服务的名字
			String className = runningServiceInfo.service.getClassName();
			//System.out.println(className);
			//判断系统里面有没有这个服务,有这个服务就返回true
			if(className.equals(serviceName)){
				return true;
			}
		}
		
		return false;
	}
	
	/*
	 * 获取到进程的个数
	 */
	public static int getProcessCount(Context context){
		//得到进程管理者
		ActivityManager activityManager = (ActivityManager) context.getSystemService(context.ACTIVITY_SERVICE);
		//获取到当前运行的进程
		List<RunningAppProcessInfo> runningAppProcesses = activityManager.getRunningAppProcesses();
		//获取当前手机上面一共有多少进程
		return runningAppProcesses.size();
	}
	
	/*
	 * 获取到可以使用的空间的大小
	 */
	public static long getAvailMem(Context context) {
		// 得到进程管理者
		ActivityManager activityManager = (ActivityManager) context
				.getSystemService(context.ACTIVITY_SERVICE);
		MemoryInfo memoryInfo = new ActivityManager.MemoryInfo();

		// 获取到内存的基本信息
		activityManager.getMemoryInfo(memoryInfo);
		// 获取到剩余内存
		return memoryInfo.availMem;
	}
	
	/*
	 * 获取到总内存
	 */
	public static long getTotalMem(Context context) {
		// 获取到总内存
		/*
		 * 这个地方不能直接跑到低版本的手机上面 MemTotal: 344740 kB "/proc/meminfo"
		 */
		try {
			// /proc/meminfo 配置文件的路径
			FileInputStream fis = new FileInputStream(new File("/proc/meminfo"));

			BufferedReader reader = new BufferedReader(new InputStreamReader(
					fis));

			String readLine = reader.readLine();

			StringBuffer sb = new StringBuffer();

			for (char c : readLine.toCharArray()) {
				if (c >= '0' && c <= '9') {
					sb.append(c);
				}
			}
			return Long.parseLong(sb.toString()) * 1024;
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return 0;

	}
}

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值