AsynkTask结合线程池的使用

//这是一个自定义的试图
public class TaskItem extends LinearLayout{
    
	private ProgressBar progressBar;
	private TextView textView;
	
	public TaskItem(Context context, AttributeSet attrs) {
		super(context, attrs);
	}

	public TaskItem(Context context) {
		super(context);
	}

	public void setTitle(String title){
		  if (textView==null) {
			textView=(TextView)findViewById(R.id.task_name);
		  }
		  textView.setText(title);
	}
	
	public void setProgress(int progress){
		if (progressBar==null) {
			progressBar=(ProgressBar)findViewById(R.id.task_progress);
		}
		progressBar.setProgress(progress);
	}
}

//这是一个异步类,你懂的
public class AsycTaskItem extends AsyncTask<Void, Integer, Void>{
	
	private TaskItem taskItem=null;
	private String name=null;
	
	
	public AsycTaskItem(TaskItem taskItem) {
		
		this.taskItem = taskItem;
	}


	@Override
	protected void onPreExecute() {
		taskItem.setTitle("Task#");
	}
	

	@Override
	protected Void doInBackground(Void... params) {
		int num = 0;
		while (num<100) {
			SystemClock.sleep(100);
			publishProgress(num);
			num++;
		}
		return null;
	}
	
	@Override
	protected void onPostExecute(Void result) {
		
	}
	
	@Override
	protected void onProgressUpdate(Integer... values) {
		 taskItem.setProgress(values[0]);  
	}

}

//主要
public class Main extends Activity {
	
	private static int ID = 0;  
    private static final int TASK_COUNT = 9;  
    private static ExecutorService SINGLE_TASK_EXECUTOR;  
    private static ExecutorService LIMITED_TASK_EXECUTOR;  
    private static ExecutorService FULL_TASK_EXECUTOR;  
    
//线程池的类别创建,下面需用
    static {  
        SINGLE_TASK_EXECUTOR = (ExecutorService) Executors.newSingleThreadExecutor();  
        LIMITED_TASK_EXECUTOR = (ExecutorService) Executors.newFixedThreadPool(7);  
        FULL_TASK_EXECUTOR = (ExecutorService) Executors.newCachedThreadPool();  
    };  
	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.main);
		 final ListView taskList = (ListView) findViewById(R.id.task_list);  
	        taskList.setAdapter(new AsycTaskAdapter(getApplication(), TASK_COUNT));  
	}

	public class AsycTaskAdapter extends BaseAdapter{
        
		 private Context mContext;  
	     private LayoutInflater mFactory;  
	     private int mTaskCount;  
	     List<AsycTaskItem> mTaskList;  
	       
	     public AsycTaskAdapter(Context context, int taskCount) {  
	         mContext = context;  
	         mFactory = LayoutInflater.from(mContext);  
	         mTaskCount = taskCount;  
	         mTaskList = new ArrayList<AsycTaskItem>(taskCount);  
	     }  
	       
	     @Override  
	     public int getCount() {  
	         return mTaskCount;  
	     }  

	     @Override  
	     public Object getItem(int position) {  
	         return mTaskList.get(position);  
	     }  

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

	     @Override  
	     public View getView(int position, View convertView, ViewGroup parent) {  
	         if (convertView == null) {  
	             convertView = mFactory.inflate(R.layout.item, null);  
	             AsycTaskItem task = new AsycTaskItem((TaskItem) convertView);  
	             task.executeOnExecutor( LIMITED_TASK_EXECUTOR); //结合线程池使用
	             mTaskList.add(task);  
	         }  
	         return convertView;  
	     }  
	}

}





评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值