今天终于勉强的做了一个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)
返回当前正在运行的任务列表(任务,是一个或多个活动的集合;这些活动以栈的形式运行在一个任务当中),按照最近一次运行的任务排在任务列表前端的方式,输出所有的任务。