AsyncTask 牛刀小试,实现下载进度条更新,ProgressBar

来源:互联网 发布:淘宝工厂店是什么意思 编辑:程序博客网 时间:2024/05/07 17:35

直接上代码,首先布局文件

<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"    android:id="@+id/activity_handler_to"    android:layout_width="match_parent"    android:layout_height="match_parent"    android:orientation="vertical"    android:paddingTop="@dimen/activity_vertical_margin">    <TextView        android:id="@+id/info_tv"        android:layout_width="wrap_content"        android:layout_height="wrap_content" />    <Button        android:id="@+id/send_info_bt"        android:layout_width="wrap_content"        android:layout_height="wrap_content"        android:text="发送" />    </LinearLayout>


布局文件后,接下来看, activity 的代码 ,原话,直接上代码


package ?;import android.os.AsyncTask;import android.support.v7.app.AppCompatActivity;import android.util.Log;import android.view.View;import android.widget.Button;import android.widget.TextView;/** * @author song * @date :2017/6/9 * @Description:  *  */public class HandlerToActivity extends AppCompatActivity {    private TextView info;    private Button send_info_bt;     @Override    protected void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.activity_handler_to);        info = (TextView) findViewById(R.id.info_tv);        send_info_bt = (Button) findViewById(R.id.send_info_bt);        send_info_bt.setOnClickListener(new View.OnClickListener() {            @Override            public void onClick(View v) {                new MyTask().execute("开始");            }        });    }    class MyTask extends AsyncTask<String, Integer, String> {        //在后台线程中执行,onPreExecute之后调用,表示执行一个后台任务        @Override        protected String doInBackground(String... params) {            Log.d("MyTask", "--------doInBackground------" + params);            for (int i = 0; i <= 50; i++) {                publishProgress(i * 2);                try {                    Thread.sleep(500);                } catch (InterruptedException e) {                    e.printStackTrace();                }            }            return "success";        }        //在UI线程调用,可以在执行任务前做准备工作。比较耗时的操作都可以放在这里        @Override        protected void onPreExecute() {            super.onPreExecute();            info.setText("正在开始更新...");        }        //相当于Handler 处理UI的方式        @Override        protected void onPostExecute(String s) {            super.onPostExecute(s);            info.setText(s);        }        //相当于Handler 处理UI的方式        @Override        protected void onProgressUpdate(Integer... values) {            super.onProgressUpdate(values);            info.setText("当前进度:" + values[0] + "%");        }        //  用户调用取消时,要做的操作        @Override        protected void onCancelled() {            super.onCancelled();        }    }}

完成,拉代码,直接就可以跑。

这是一个简单的代码,其实技术含量还是挺高的


阅读全文
1 0
原创粉丝点击