package com.ldci.asynctask;
import java.util.ArrayList;
import java.util.Hashtable;
import java.util.List;
import java.util.Map;
import android.app.ListActivity;
import android.content.Context;
import android.os.AsyncTask;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.view.View.OnClickListener;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.AdapterView.OnItemClickListener;
import android.widget.BaseAdapter;
import android.widget.Button;
import android.widget.ProgressBar;
import android.widget.TextView;
public class AsyncTaskActivity extends ListActivity
{
/** 用来存放每一个正在进行的下载任务 */
public static List<Map<String, Async>> listTask = new ArrayList<Map<String, Async>>();
private static List<Button> listStart = new ArrayList<Button>();
private static List<Button> listStop = new ArrayList<Button>();
private static List<Button> listPause = new ArrayList<Button>();
private static List<Button> listContinue = new ArrayList<Button>();
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
ListAdapter adapter = new ListAdapter(this);
setListAdapter(adapter);
getListView().setFocusable(false);
}
//=======================================================
private class ListAdapter extends BaseAdapter implements OnClickListener
{
private Context context = null;
public ListAdapter(Context context)
{
this.context = context;
}
@Override
public int getCount()
{
return Utils.title.length;
}
@Override
public Object getItem(int position)
{
return position;
}
@Override
public long getItemId(int id)
{
return id;
}
@Override
public View getView(int position, View convertView, ViewGroup parent)
{
if(convertView==null)
{
convertView = View.inflate(this.context, R.layout.list_item, null);
}
TextView txt_title = (TextView)convertView.findViewById(R.id.txt);
ProgressBar pb_progressBar = (ProgressBar)convertView.findViewById(R.id.progressBar);
Button btn_start = (Button)convertView.findViewById(R.id.btn_start);
Button btn_pause = (Button)convertView.findViewById(R.id.btn_pause);
Button btn_stop = (Button)convertView.findViewById(R.id.btn_stop);
Button btn_continue = (Button)convertView.findViewById(R.id.btn_continue);
// 给统一列表项的下载、停止、暂停、继续、进度条控件设置相同的Tag
btn_start.setTag(String.valueOf(position));
btn_pause.setTag(String.valueOf(position));
btn_stop.setTag(String.valueOf(position));
btn_continue.setTag(String.valueOf(position));
pb_progressBar.setTag(String.valueOf(position));
txt_title.setText(Utils.title[position]);
pb_progressBar.setProgress(Utils.progress[position]);
// 将个下载项的进度条加到进度条列表
Async.listPb.add(pb_progressBar);
listStart.add(btn_start);
listStop.add(btn_stop);
listPause.add(btn_pause);
listContinue.add(btn_continue);
// 设置按钮控件的可见性 0 可见,4 不占位不可见 ,8 占位不可见
listStart.get(position).setVisibility(0);
listPause.get(position).setVisibility(8);
listStop.get(position).setVisibility(8);
listContinue.get(position).setVisibility(8);
Async.listPb.get(position).setVisibility(8);
Async.listPb.get(position).setProgress(0);
// 设置监听
btn_start.setOnClickListener(this);
btn_pause.setOnClickListener(this);
btn_stop.setOnClickListener(this);
btn_continue.setOnClickListener(this);
return convertView;
}
Async asyncTask = null;
Map<String, Async> map = null;
@Override
public void onClick(View v)
{
switch (v.getId())
{
case R.id.btn_start:
Async startTask = null;
boolean isHas = false;
// 判断当前要下载的这个连接是否已经正在进行,如果正在进行就阻止在此启动一个下载任务
for(int i=0;i<listTask.size();i++)
{
startTask = listTask.get(i).get(String.valueOf(v.getTag()));
if(startTask!=null)
{
isHas = true;
break;
}
}
// 如果这个连接的下载任务还没有开始,就创建一个新的下载任务启动下载,并这个下载任务加到下载列表中
if(!isHas)
{
asyncTask = new Async(); // 创建新异步
map = new Hashtable<String, Async>();
map.put(String.valueOf(v.getTag()), asyncTask);
listTask.add(map);
// 当调用AsyncTask的方法execute时,就回去自动调用doInBackground方法
asyncTask.execute(String.valueOf(v.getTag()));
// 设置按钮控件的可见性 0 可见,4 不占位不可见 ,8 占位不可见
listStart.get(Integer.parseInt(String.valueOf(v.getTag()))).setVisibility(8);
listPause.get(Integer.parseInt(String.valueOf(v.getTag()))).setVisibility(0);
listStop.get(Integer.parseInt(String.valueOf(v.getTag()))).setVisibility(0);
listContinue.get(Integer.parseInt(String.valueOf(v.getTag()))).setVisibility(8);
Async.listPb.get(Integer.parseInt(String.valueOf(v.getTag()))).setVisibility(0);
}
Log.d("debug","add listTask.size:"+listTask.size());
break;
case R.id.btn_pause:
Async pauseTask = null;
// 判断但前被停止的这个任务在任务列表中是否存在,如果存在就暂停
for(int i=0;i<listTask.size();i++)
{
pauseTask = listTask.get(i).get(String.valueOf(v.getTag()));
if(pauseTask!=null)
{
asyncTask = new Async();
// 为什么这里的asyncTask.isPaused()一直是false??????????
Log.d("debug","-------asyncTask.paused:"+asyncTask.isPaused());
pauseTask.pause();
// 设置按钮控件的可见性 0 可见,4 不占位不可见 ,8 占位不可见
listStart.get(Integer.parseInt(String.valueOf(v.getTag()))).setVisibility(8);
listPause.get(Integer.parseInt(String.valueOf(v.getTag()))).setVisibility(8);
listStop.get(Integer.parseInt(String.valueOf(v.getTag()))).setVisibility(0);
listContinue.get(Integer.parseInt(String.valueOf(v.getTag()))).setVisibility(0);
Async.listPb.get(Integer.parseInt(String.valueOf(v.getTag()))).setVisibility(0);
break;
}
}
Log.d("debug","pause listTask.size:"+listTask.size());
break;
case R.id.btn_continue:
Async continueTask = null;
// 判断但前被停止的这个任务在任务列表中是否存在,如果存在就继续
for(int i=0;i<listTask.size();i++)
{
continueTask = listTask.get(i).get(String.valueOf(v.getTag()));
if(continueTask!=null)
{
asyncTask = new Async();
// 为什么这里的asyncTask.isPaused()一直是false??????????
Log.d("debug","-------asyncTask.paused:"+asyncTask.isPaused());
continueTask.continued();
// 设置按钮控件的可见性 0 可见,4 占位不可见 ,8 不占位不可见
listStart.get(Integer.parseInt(String.valueOf(v.getTag()))).setVisibility(8);
listPause.get(Integer.parseInt(String.valueOf(v.getTag()))).setVisibility(0);
listStop.get(Integer.parseInt(String.valueOf(v.getTag()))).setVisibility(0);
listContinue.get(Integer.parseInt(String.valueOf(v.getTag()))).setVisibility(8);
Async.listPb.get(Integer.parseInt(String.valueOf(v.getTag()))).setVisibility(0);
break;
}
}
Log.d("debug","pause listTask.size:"+listTask.size());
break;
case R.id.btn_stop:
Async cancleTask = null;
// 判断但前被停止的这个任务在任务列表中是否存在,如果存在就移除
for(int i=0;i<listTask.size();i++)
{
cancleTask = listTask.get(i).get(String.valueOf(v.getTag()));
if(cancleTask!=null)
{
// 调用cancle方法就回去调用AsyncTask类的onCancelled方法来停止下载任务
cancleTask.cancel(false);
Log.d("debug","remove sucess?:"+listTask.remove(i));
// 设置按钮控件的可见性 0 可见,4 不占位不可见 ,8 占位不可见
listStart.get(Integer.parseInt(String.valueOf(v.getTag()))).setVisibility(0);
listPause.get(Integer.parseInt(String.valueOf(v.getTag()))).setVisibility(8);
listStop.get(Integer.parseInt(String.valueOf(v.getTag()))).setVisibility(8);
listContinue.get(Integer.parseInt(String
没有合适的资源?快使用搜索试试~ 我知道了~
资源推荐
资源详情
资源评论
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![zip](https://img-home.csdnimg.cn/images/20210720083736.png)
![py](https://img-home.csdnimg.cn/images/20210720083646.png)
![rar](https://img-home.csdnimg.cn/images/20210720083606.png)
收起资源包目录
![package](https://csdnimg.cn/release/downloadcmsfe/public/img/package.f3fc750b.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/PNG.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/PNG.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/PNG.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![folder](https://csdnimg.cn/release/downloadcmsfe/public/img/folder.005fa2e5.png)
![file-type](https://csdnimg.cn/release/download/static_files/pc/images/minetype/UNKNOWN.png)
共 28 条
- 1
资源评论
![avatar-default](https://csdnimg.cn/release/downloadcmsfe/public/img/lazyLogo2.1882d7f4.png)
![avatar](https://profile-avatar.csdnimg.cn/24132c58666243a9832df71790b4fe3a_zgw555555.jpg!1)
Soft_Leader
- 粉丝: 1389
- 资源: 1806
上传资源 快速赚钱
我的内容管理 展开
我的资源 快来上传第一个资源
我的收益
登录查看自己的收益我的积分 登录查看自己的积分
我的C币 登录后查看C币余额
我的收藏
我的下载
下载帮助
![voice](https://csdnimg.cn/release/downloadcmsfe/public/img/voice.245cc511.png)
![center-task](https://csdnimg.cn/release/downloadcmsfe/public/img/center-task.c2eda91a.png)
安全验证
文档复制为VIP权益,开通VIP直接复制
![dialog-icon](https://csdnimg.cn/release/downloadcmsfe/public/img/green-success.6a4acb44.png)