Android消息机制六---AsyncTask例子

来源:互联网 发布:淘宝优惠券领取faquan 编辑:程序博客网 时间:2024/06/07 03:25

Android消息机制之六---AsyncTask例子

本博客是对之前的android异步的一个例子;

public class MainActivity extends AppCompatActivity {    private Button download = null;    private TextView text = null;    private ProgressBar progressBar = null;    private Handler handler = new Handler(){        @Override        public void handleMessage(Message msg) {            switch (msg.what){                case 0:                    progressBar.setProgress(msg.arg1);                    text.setText(msg.arg1 + "%");                    break;            }        }    };    @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_main);        this.download = (Button)this.findViewById(R.id.btn);        this.text = (TextView)this.findViewById(R.id.text);        this.progressBar = (ProgressBar)this.findViewById(R.id.progress);        this.progressBar.setMax(100);        this.download.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                //利用AsyncTask来进行更新                DownLoadAsync downLoadAsync = new DownLoadAsync(progressBar, text);                downLoadAsync.execute();                //利用Handler + Message来更新;//                UpdateThread updateThread = new UpdateThread(handler);//                updateThread.start();            }        });        //测试Looper线程        new LooperThread().start();    }    private class DownLoadAsync extends AsyncTask<Void,Integer, Boolean>{        private ProgressBar progressBar = null;        private TextView   textView = null;        public DownLoadAsync(ProgressBar p, TextView t){            this.progressBar = p;            this.textView = t;        }        @Override        protected void onPreExecute() {            this.textView.setText("0%");            this.progressBar.setProgress(0);            super.onPreExecute();        }        @Override        protected void onPostExecute(Boolean aBoolean) {            super.onPostExecute(aBoolean);        }        @Override        protected void onProgressUpdate(Integer... values) {            this.progressBar.setProgress(values[0]);            this.textView.setText(values[0] + "%");            super.onProgressUpdate(values);        }        @Override        protected Boolean doInBackground(Void... params) {            for(int i = 1;i <= 100; i++){                this.publishProgress(i);                try{                    Thread.sleep(100);                }catch (Exception e){                    e.printStackTrace();                }            }            return Boolean.TRUE;        }    }}


0 0
原创粉丝点击