获取系统资源APP

今天终于勉强的做了一个APP,记录下吧,怕丢失了。

用到的知识点

1.listview适配器SimpleAdapter

listview最简单的适配器是arrayAdapter,这个相对是比较复杂的,参数解释如下:

 SimpleAdapter mSimpleAdapter=new SimpleAdapter(MainActivity.this, getData(),R.layout.item, new String[]{"progressname","progressUID","progressPID","progressmemSize"},new int[]{R.id.ItemTitle1,R.id.ItemText2,R.id.ItemText3,R.id.ItemText4});

第一个参数是Context,就是你当前的activity

第二个参数是需要展示的列表,每个列表里存的是Map
第三个参数是ListView中每一项的布局文件
第四个参数是列表里每一个Map的键
第五个是R.layout.line这个布局文件中每个控件的id

代码如下:

package com.example.androidthreadtest;

import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

import android.app.Activity;
import android.app.ActivityManager;
import android.app.ActivityManager.MemoryInfo;
import android.app.ActivityManager.RunningAppProcessInfo;
import android.content.Context;
import android.os.Bundle;
import android.os.Debug;
import android.os.Handler;
import android.os.Message;
import android.text.format.Formatter;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.ArrayAdapter;
import android.widget.Button;
import android.widget.ListView;
import android.widget.SimpleAdapter;
import android.widget.TextView;

public class MainActivity extends Activity{
    private TextView text,textname;
    private ActivityManager mActivityManager;
    private Button button1,button2;
    List<ActivityManager.RunningAppProcessInfo> list1;
    

    
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        text = (TextView) findViewById(R.id.text);
        textname=(TextView)findViewById(R.id.textname);
        button1=(Button)findViewById(R.id.button);
        button2=(Button)findViewById(R.id.button2);
        final ListView listView = (ListView) findViewById(R.id.list_view);
        mActivityManager=(ActivityManager)getSystemService(Context.ACTIVITY_SERVICE);
        final MemoryInfo memoryInfo=new MemoryInfo();
        mActivityManager.getMemoryInfo(memoryInfo);
        list1=mActivityManager.getRunningAppProcesses(); 
        textname.setText("正在运行的共:"+list1.size()+"个进程");

        button1.setOnClickListener(new OnClickListener() {
            
            @Override
            public void onClick(View v) {
                String availMemStr=Formatter.formatFileSize(MainActivity.this, memoryInfo.availMem);
                text.setText(availMemStr);
                
            }
        });

        button2.setOnClickListener(new OnClickListener() { 
        
            
            @Override
            public void onClick(View v) {

                SimpleAdapter mSimpleAdapter=new SimpleAdapter(MainActivity.this, getData(),R.layout.item, new String[]{"progressname","progressUID","progressPID","progressmemSize"},new int[]{R.id.ItemTitle1,R.id.ItemText2,R.id.ItemText3,R.id.ItemText4});
                listView.setAdapter(mSimpleAdapter);

            }
        });
        

    }

    private ArrayList<HashMap<String,Object>> getData(){

          Iterator<RunningAppProcessInfo> iterator=list1.iterator();
          ArrayList<HashMap<String, Object>> listItem = new ArrayList<HashMap<String,Object>>();

          while(iterator.hasNext()){
                RunningAppProcessInfo runapp=iterator.next();
                int pid=runapp.pid;
                int uid=runapp.uid;
                String progressname=runapp.processName;
                int[] myMempid = new int[]{pid}; 
                android.os.Debug.MemoryInfo[] mem=mActivityManager.getProcessMemoryInfo(myMempid);
                int memSize = mem[0].dalvikPrivateDirty; 
                HashMap<String, Object> map = new HashMap<String, Object>(); 
                map.put("progressname", "progressname:"+progressname);
                map.put("progressUID", "UID is:"+uid);
                map.put("progressPID", "PID is:"+pid);
                map.put("progressmemSize", "占用内存:"+memSize);
                listItem.add(map); 
                
          }
            return listItem;
          }


}

布局文件activity_main如下:

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical" >

    
    <TextView
        android:id="@+id/text"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:text="Hello world"
        android:textSize="20sp" />
    <Button 
        android:id="@+id/button"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="系统可用内存"
        />

    <Button 
        android:id="@+id/button2"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="获取系统进程信息"
        />
     <TextView
        android:id="@+id/textname"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_centerInParent="true"
        android:textSize="20sp" />
    <ListView 
        android:id="@+id/list_view"
        android:layout_width="match_parent"
        android:layout_height="match_parent">      
    </ListView>
    

</LinearLayout>

item.xml如下:

<RelativeLayout
  xmlns:android="http://schemas.android.com/apk/res/android" 
  android:layout_height="fill_parent"
  android:layout_width="fill_parent"> 

<TextView
    android:id="@+id/ItemTitle1" 
    android:layout_height="wrap_content" 
    android:layout_width="fill_parent" 
    android:textSize="20sp"/>
 <TextView
     android:id="@+id/ItemText2" 
     android:layout_height="wrap_content" 
     android:layout_width="fill_parent" 
     android:layout_below="@+id/ItemTitle1"
     android:textSize="20sp"/> 
  <TextView
     android:id="@+id/ItemText3" 
     android:layout_height="wrap_content" 
     android:layout_width="fill_parent" 
     android:layout_below="@+id/ItemText2"
     android:textSize="20sp"/> 
   <TextView
     android:id="@+id/ItemText4" 
     android:layout_height="wrap_content" 
     android:layout_width="fill_parent" 
     android:layout_below="@+id/ItemText3"
     android:textSize="20sp"/> 
 </RelativeLayout>

1、List<ActivityManager.RunningAppProcessInfo> getRunningAppProcesses()

  返回当前运行在Android设备上的所有应用程序的进程。

2、List<ActivityManager.RunningServiceInfo> getRunningServices(int maxNum) 

   返回当前正在运行的服务列表

3、List<ActivityManager.RunningTaskInfo> getRunningTasks(int maxNum)

  返回当前正在运行的任务列表(任务,是一个或多个活动的集合;这些活动以栈的形式运行在一个任务当中),按照最近一次运行的任务排在任务列表前端的方式,输出所有的任务。 

原文地址:https://www.cnblogs.com/penghong2014/p/4898122.html