1. 创建taskMemoryUtils, 在工具类中创建am, 通过am获取正在运行的进程的个数、可用内存空间大小、总内存空间大小
2. 创建javaBean
3. 创建javaBen数据访问类, 在TaskInfoprovider类中创建javaBen数据访问方法, 在方法中创建ap,pm 初始化javaBean内的属性值, 并将javaBean装载在集合中, 并返回该集合
4. 在TaskManagerActivity中, filldate到内存(集合中); 然后通知handler跟新界面(给listView创建适配器)
5. 给listView中的条目设置setOnItemClickListener();在点击事件的方法中如果需要获取item容器中的javaBean; 重写适配器中的getItem()方法, 初始化条目中的javaBean, 返回javaBean让 setOnItemClickListener();接收
6.在全选,取消全选, 反选的方法中, 改变了集合中javaBean的的属性值, 则集合中数据要和listView中的数据同步; 刷新界面 adapter.notifyDataSetChanged(); //刷新界面
public
class
TaskManagerActivity
extends
Activity {
private
TextView
tv_process_count
;
private
TextView
tv_mem_info
;
private
ListView
lv_task_manage
;
private
LinearLayout
task_loading
;
private
long
availMem
;
private
long
totalMem
;
private
TaskInfoBean
taskInfoBean
;
private
List<TaskInfoBean>
allTaskInfos
;
private
List<TaskInfoBean>
userTaskInfos
;
private
List<TaskInfoBean>
sysTaskInfos
;
private
MyAdapter
adapter
;
/**
* 创建消息机制
*/
private
Handler
handler
=
new
Handl er(){
@Override
public
void
handleMessage(Message msg) {
super
.handleMessage(msg);
task_loading
.setVisibility(View.
GONE
);
//加载界面不可见
adapter
=
new
MyAdapter();
lv_task_manage
.setAdapter(
adapter
);
}
};
@Override
protected
void
onCreate(Bundle savedInstanceState) {
super
.onCreate(savedInstanceState);
setContentView(R.layout.
activity_task_manage
);
//找到关心的控件
tv_process_count
=(TextView) findViewById(R.id.
tv_process_count
);
tv_mem_info
=(TextView) findViewById(R.id.
tv_mem_info
);
lv_task_manage
=(ListView) findViewById(R.id.
lv_task_manage
);
task_loading
=(LinearLayout) findViewById(R.id.
task_loading
);
//给关心的控件赋值
tv_process_count
.setText(
"正在运行进程:"
+TaskMemoreryUtis.getRuingProcessCount (
this
)+
"个"
);
availMem
=TaskMemoreryUtis. getAvailMem(
this
);
totalMem
=TaskMemoreryUtis. getTotalMem(
this
);
tv_mem_info
.setText(
"可用/总内存:"
+Formatter.formatFileSize(
this
,
availMem
)+
"/"
+Formatter. formatFileSize(
this
,
totalMem
));
//声明进程集合
allTaskInfos
=
new
ArrayList<TaskInfoBean>();
userTaskInfos
=
new
ArrayList<TaskInfoBean>();
sysTaskInfos
=
new
ArrayList<TaskInfoBean>();
//给listview 设置item点击事件
lv_task_manage
.setOnItemClickListener(
new
OnItemClickListener() {
@Override
public
void
onItemClick(AdapterView<?> parent, View view,
int
position,
long
id) {
//得到条目对应的对象
Object obj =
lv_task_manage
.getItemAtPosition(position);
if
(obj!=
null
&& obj
instanceof
TaskInfoBean){
taskInfoBean
=(TaskInfoBean) obj;
//得到适配器中getItem()方法返回的item中的对象
if
(
taskInfoBean
.getPackageName().equals(getPackageName())){
//应用是手机卫士时,下面的代码不执行
return
;
}
CheckBox cb=(CheckBox) view.findViewById(R.id.
cb_status
);
if
(
taskInfoBean
.isChecked()){
cb.setChecked(
false
);
taskInfoBean
.setChecked(
false
);
}
else
{
cb.setChecked(
true
);
taskInfoBean
.setChecked(
true
);
}
}
}
});
//填充数据
fillDate();
}
/**
* 填充数据
*/
private
void
fillDate() {
task_loading
.setVisibility(View.
VISIBLE
);
new
Thread(){
public
void
run() {
//初始化集合中数据
allTaskInfos
=TaskInfoProvider. getTaskInfos(getApplicationContext());
for
(TaskInfoBean allTaskInfo :
allTaskInfos
) {
if
(allTaskInfo.isUserTask()){
userTaskInfos
.add(allTaskInfo);
//初始化用户 app集合
}
else
{
sysTaskInfos
.add(allTaskInfo);
//初始化系统 app集合
}
}
handler
.sendEmptyMessage(0);
//通知主线程跟新 ui
};
}.start();
}
/**
* 创建适配器
*
*/
public
class
MyAdapter
extends
BaseAdapter{
@Override
public
int
getCount() {
return
userTaskInfos
.size()+1+
sysTaskInfos
.size()+1;
}
@Override
public
View getView(
int
position, View convertView, ViewGroup parent) {
//初始化javaBean
if
(position==0){
TextView tv_user=
new
TextView(getApplicationContext());
tv_user.setText(
"用户应用"
);
tv_user.setBackgroundColor(Color.
GRAY
);
tv_user.setTextColor(Color.
WHITE
);
return
tv_user;
}
else
if
(position==
userTaskInfos
.size()+1){
TextView tv_sys=
new
TextView(getApplicationContext());
tv_sys.setText(
"系统应用"
);
tv_sys.setBackgroundColor(Color.
GRAY
);
tv_sys.setTextColor(Color.
WHITE
);
return
tv_sys;
}
else
if
(position<=
userTaskInfos
.size()){
taskInfoBean
=
userTaskInfos
.get(position-1);
}
else
{
taskInfoBean
=
sysTaskInfos
.get(position-1-
userTaskInfos
.size()-1);
}
//填充布局
View view;
ViewHolder holder;
if
(convertView!=
null
&&convertView
instanceof
RelativeLayout){
view=convertView;
holder=(ViewHolder) view.getTag();
}
else
{
holder=
new
ViewHolder();
view=View. inflate(getApplicationContext(),R.layout.
list_task_item
,
null
);
holder.
iv_taskicon
=(ImageView) view.findViewById(R.id.
iv_taskicon
);
holder.
tv_taskname
=(TextView)view.findViewById(R.id.
tv_taskname
);
holder.
tv_meminfo
=(TextView)view.findViewById(R.id.
tv_meminfo
);
holder.
cb_status
=(CheckBox)view.findViewById(R.id.
cb_status
);
view.setTag(holder);
}
//给item中的对象赋值
holder.
iv_taskicon
.setImageDrawable(
taskInfoBean
.getIcon());
holder.
tv_taskname
.setText(
taskInfoBean
.getName());
holder.
tv_meminfo
.setText(
"内训占用"
+Formatter.formatFileSize(getApplicationContext(),
taskInfoBean
.getMemorySize()));
if
(
taskInfoBean
.isChecked()) {
holder.
cb_status
.setChecked(
true
);
}
else
{
holder.
cb_status
.setChecked(
false
);
}
// 不显示自己 手机卫士的 checkbox
if
(
taskInfoBean
.getPackageName().equals(getPackageName())) {
holder.
cb_status
.setVisibility(View.
INVISIBLE
);
}
else
{
holder.
cb_status
.setVisibility(View.
VISIBLE
);
}
return
view;
}
/**
* 返回Item对象给, item的点击事件
*/
@Override
public
Object getItem(
int
position) {
//初始化javaBean返回给item的点击事件
if
(position==0){
return
null
;
}
else
if
(position==
userTaskInfos
.size()+1){
return
null
;
}
else
if
(position<=
userTaskInfos
.size()){
taskInfoBean
=
userTaskInfos
.get(position-1);
}
else
{
taskInfoBean
=
sysTaskInfos
.get(position-1-
userTaskInfos
.size()-1);
}
return
taskInfoBean
;
}
@Override
public
long
getItemId(
int
position) {
return
0;
}
}
/**
*
* 创建item内控件id的引用
*
*/
static
class
ViewHolder {
ImageView
iv_taskicon
;
TextView
tv_taskname
;
TextView
tv_meminfo
;
CheckBox
cb_status
;
}
/**
* 全选的方法
*
@param
view
*/
public
void
selectAll(View view){
for
(TaskInfoBean userTaskInfo :
userTaskInfos
) {
if
(userTaskInfo.getPackageName().equals(getPackageName())){
continue
;
//结束本次循环
}
userTaskInfo.setChecked(
true
);
}
for
(TaskInfoBean sysTaskInfo :
sysTaskInfos
) {
sysTaskInfo.setChecked(
true
);
}
adapter
.notifyDataSetChanged();
//刷新界面
}
/**
* 取消全选的方法
*
@param
view
*/
public
void
unSelectAll(View view){
for
(TaskInfoBean userTaskInfo :
userTaskInfos
) {
if
(userTaskInfo.getPackageName().equals(getPackageName())){
continue
;
//结束本次循环
}
userTaskInfo.setChecked(
false
);
}
for
(TaskInfoBean sysTaskInfo :
sysTaskInfos
) {
sysTaskInfo.setChecked(
false
);
}
adapter
.notifyDataSetChanged();
//刷新界面
}
/**
* 取反的方法
*
@param
view
*/
public
void
selectOppistie(View view){
for
(TaskInfoBean userTaskInfo :
userTaskInfos
) {
if
(userTaskInfo.getPackageName().equals(getPackageName())){
continue
;
//结束本次循环
}
if
(userTaskInfo.isChecked()){
userTaskInfo.setChecked(
false
);
}
else
{
userTaskInfo.setChecked(
true
);
}
}
for
(TaskInfoBean sysTaskInfo :
sysTaskInfos
) {
if
(sysTaskInfo.isChecked()){
sysTaskInfo.setChecked(
false
);
}
else
{
sysTaskInfo.setChecked(
true
);
}
}
adapter
.notifyDataSetChanged();
//刷新界面
}
}