使用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)任务完成