1 public class ImageTest extends Activity {
2 private ImageView imageView;
3 private ProgressBar progressBar;
4 String URL = "http://p4.so.qhimgs1.com/sdr/1228_768_/t01f7ed810efbfe800a.jpg";
5
6 @Override
7 protected void onCreate(Bundle savedInstanceState) {
8 // TODO Auto-generated method stub
9 super.onCreate(savedInstanceState);
10 setContentView(R.layout.image);
11 imageView = (ImageView) findViewById(R.id.image);
12 progressBar = (ProgressBar) findViewById(R.id.bar);
13
14 MyAsynctask1 task = new MyAsynctask1();
15 task.execute(URL);
16
17 }
18
19 // params:启动任务时输入参数的类型。
20 // progress:后台任务执行中,返回进度值的类型。
21 // Result:后台执行任务完成后,返回结果的类型。
22 class MyAsynctask1 extends AsyncTask<String, Void, Bitmap> {
23 @Override
24 // 异步初始化
25 protected void onPreExecute() {
26 // TODO Auto-generated method stub
27 super.onPreExecute();
28 // 显示进度条
29 progressBar.setVisibility(View.VISIBLE);
30 }
31
32 @Override
33 protected void onPostExecute(Bitmap result) {
34 // TODO Auto-generated method stub
35 super.onPostExecute(result);
36 progressBar.setVisibility(View.GONE);
37 imageView.setImageBitmap(result);
38
39 }
40
41 @Override
42 protected Bitmap doInBackground(String... params) {
43 // TODO Auto-generated method stub
44
45 // 从params中取出参数值,传给url
46 String url = params[0];
47 // 初始化参数
48 Bitmap bitmap = null;
49 URLConnection connection;
50 InputStream inputStream;
51
52 try {
53 connection = new URL(url).openConnection();
54 inputStream = connection.getInputStream();// 获取输入流
55 BufferedInputStream bis = new BufferedInputStream(inputStream);
56 Thread.sleep(3000);// 睡3秒
57 // 通过decodeStream()解析输入流
58 bitmap = BitmapFactory.decodeStream(bis);
59 inputStream.close();
60 bis.close();
61
62 } catch (IOException e) {
63 // TODO Auto-generated catch block
64 e.printStackTrace();
65 } catch (InterruptedException e) {
66 // TODO Auto-generated catch block
67 e.printStackTrace();
68 }
69 return bitmap;
70 }
71
72 }
73
74 }
1 public class ProgressBarTest extends Activity {
2
3 ProgressBar progressBar;
4 MyAsycnTask2 task;
5 @Override
6 protected void onCreate(Bundle savedInstanceState) {
7 // TODO Auto-generated method stub
8 super.onCreate(savedInstanceState);
9 setContentView(R.layout.progressbar);
10 progressBar = (ProgressBar) findViewById(R.id.progressBar1);
11
12 task = new MyAsycnTask2();
13 task.execute();
14 }
15
16 @Override
17 protected void onPause() {
18 // TODO Auto-generated method stub
19 super.onPause();
20 if (task!=null&&task.getStatus()==AsyncTask.Status.RUNNING) {
21 task.cancel(true);//cancel()只是将对应的task标记为cancel状态,并不是真正取消线程执行
22 }
23 }
24
25 class MyAsycnTask2 extends AsyncTask<Void, Integer, Void> {
26
27 @Override
28 protected void onProgressUpdate(Integer... values) {
29 // TODO Auto-generated method stub
30 // 获取进度更新值
31 super.onProgressUpdate(values);
32 if (isCancelled()) {
33 return;
34 }
35 progressBar.setProgress(values[0]);
36 }
37
38 @Override
39 protected Void doInBackground(Void... params) {
40 // TODO Auto-generated method stub
41
42 // 模拟进度更新
43 for (int i = 0; i < 100; i++) {
44 if (isCancelled()) {
45 break;
46 }
47 publishProgress(i);
48 try {
49 Thread.sleep(300);
50 } catch (InterruptedException e) {
51 // TODO Auto-generated catch block
52 e.printStackTrace();
53 }
54 }
55 return null;
56 }
57 }
58 }