Android开发:使用AsyncTask设计一个异步任务

作业3 线程控制
安卓中的线程控制是非常重要的内容,请使用AsyncTask设计一个异步任务;

本次作业用AsyncTask实现后台下载控制,并显示实时下载进度。主要代码如下:

1、MainActivity

public class MainActivity extends AppCompatActivity {
    Button button;
    ProgressBar progressBar;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        button = findViewById(R.id.button);
        progressBar = findViewById(R.id.progressBar);

        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                new MyAsyncTask().execute();
            }
        });
    }
}

2、异步AsyncTask控制

class MyAsyncTask extends AsyncTask<String,Integer,String> {
        @Override
        protected void onPreExecute() {
            progressBar.setVisibility(View.VISIBLE);
            super.onPreExecute();
        }
        @Override
        protected String doInBackground(String... strings) { 
            int step = 1;
            try {
                while (step <= 100) {
                    publishProgress(step++);
                    Thread.sleep(50);
                }
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
            return "下载完成!";   
        }
        @Override
        protected void onProgressUpdate(Integer... values) {   
            progressBar.setProgress(values[0]); 
            super.onProgressUpdate(values);
            button.setText("后台下载任务进行中...");
        }
        @Override
        protected void onPostExecute(String s) {     
            progressBar.setVisibility(View.GONE);   
            button.setText(s); 
            super.onPostExecute(s);
        }
    }

3、运行效果

(1)未开始下载

在这里插入图片描述

(2)下载进行中

在这里插入图片描述

(3)下载完成

在这里插入图片描述


版权声明:本文为m0_47114547原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。