android listView的优化内存

package cn.itcast.mobileguard;

import java.util.List;

import android.app.Activity;
import android.os.AsyncTask;
import android.os.Bundle;
import android.os.Handler;
import android.os.MemoryFile;
import android.util.Log;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.LinearLayout;
import android.widget.ListView;
import android.widget.RelativeLayout;
import android.widget.TextView;
import cn.itcast.mobileguard.db.dao.BlackNumberDao;
import cn.itcast.mobileguard.domain.BlackNumber;

public class CallSmsSafeActivity extends Activity {
 public static final String TAG = "CallSmsSafeActivity";
 private ListView lv_call_sms_safe;
 private BlackNumberDao dao;
 private List<BlackNumber> blackNumbers;
 private LinearLayout ll_loading;

 @Override
 protected void onCreate(Bundle savedInstanceState) {
  setContentView(R.layout.activity_call_sms_safe);
  lv_call_sms_safe = (ListView) findViewById(R.id.lv_call_sms_safe);
  ll_loading = (LinearLayout) findViewById(R.id.ll_loading);
  dao = new BlackNumberDao(this);

  new AsyncTask<Void, Void, Void>() {

   @Override
   protected Void doInBackground(Void... params) {
    blackNumbers = dao.findAll();
    try {
     Thread.sleep(3000);
    } catch (InterruptedException e) {
     // TODO Auto-generated catch block
     e.printStackTrace();
    }
    return null;
   }

   @Override
   protected void onPreExecute() {
    ll_loading.setVisibility(View.VISIBLE);
    super.onPreExecute();
   }

   @Override
   protected void onPostExecute(Void result) {
    ll_loading.setVisibility(View.INVISIBLE);
    lv_call_sms_safe.setAdapter(new CallSmsAdapter());
    super.onPostExecute(result);
   }

  }.execute();

  super.onCreate(savedInstanceState);
 }

 private class CallSmsAdapter extends BaseAdapter {

  public int getCount() {
   return blackNumbers.size();
  }

  public Object getItem(int position) {
   return blackNumbers.get(position);
  }

  public long getItemId(int position) {
   return position;
  }

  public View getView(int position, View convertView, ViewGroup parent) {
   View view = null;
   ViewHolder holder;
   if (convertView != null && convertView instanceof RelativeLayout) {
    view = convertView;
    Log.i(TAG, "使用缓存view对象" + position);
    holder = (ViewHolder) view.getTag();
   } else {
    Log.i(TAG, "创建新的view对象" + position);
    view = View.inflate(getApplicationContext(),
      R.layout.layout_call_sms_item, null);
    holder = new ViewHolder();
    holder.tv_mode = (TextView) view
      .findViewById(R.id.tv_call_sms_item_mode);
    holder.tv_number =  (TextView) view
      .findViewById(R.id.tv_call_sms_item_number);
    //把textview对象的引用存放在 view对象里面.
    //减少了控件被查询的次数,只在控件被初始化 查询寻找控件
    view.setTag(holder);
   }
   BlackNumber blackNumber = blackNumbers.get(position);
   String mode = blackNumber.getMode();
   if ("phone".equals(mode)) {
    holder.tv_mode.setText("电话拦截");
   } else if ("sms".equals(mode)) {
    holder.tv_mode.setText("短信拦截");
   } else {
    holder.tv_mode.setText("全部拦截");
   }

   holder.tv_number.setText(blackNumber.getNumber());
   return view;
  }

 }
 
 static class ViewHolder{
  TextView tv_mode;
  TextView tv_number;
 }
}

1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看REAdMe.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看REAdMe.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看READme.md或论文文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 5、资源来自互联网采集,如有侵权,私聊博主删除。 6、可私信博主看论文后选择购买源代码。
1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。 、 1资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看READmE.文件(md如有),本项目仅用作交流学习参考,请切勿用于商业用途。 1、资源项目源码均已通过严格测试验证,保证能够正常运行; 2、项目问题、技术讨论,可以给博主私信或留言,博主看到后会第一时间与您进行沟通; 3、本项目比较适合计算机领域相关的毕业设计课题、课程作业等使用,尤其对于人工智能、计算机科学与技术等相关专业,更为适合; 4、下载使用后,可先查看README.md文件(如有),本项目仅用作交流学习参考,请切勿用于商业用途。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值