[mobilesafe] 02_google提供的异步任务重量级框架

Android 4.0

google提供的异步任务重量级框架

如果是一个线程的就用自己写的那个轻量级的异步框架

如果是多个线程,比如下载,就用google的异步框架
核心代码:
package cn.zengfansheng.asynctask;
import android.app.Activity;
import android.os.AsyncTask;
import android.os.Bundle;
import android.view.View;
import android.widget.TextView;
import cn.zengfansheng.googleasynctask.R;

public class MainActivity extends Activity {
    private TextView tv;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        tv = (TextView) this.findViewById(R.id.tv);
    }
    /**
     * 执行异步任务-使用google提供的重量级异步任务框架来
     * @param view
     */
    public void click(View view) {
        // 第二个参数 是执行过程中进度 的数据类型
        new AsyncTask<Void, Integer, Void>() {
            // 1、耗时任务之前的逻辑
            @Override
            protected void onPreExecute() {
                super.onPreExecute();
                tv.setText("要开始执行耗时任务了...");
            }
            // 2、后台子线程逻辑
            @Override
            protected Void doInBackground(Void... params) {
                for (int i = 1; i <= 100; i++) {
                    try {
                        Thread.sleep(30);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }
                    publishProgress(i);// 要在后台任务进行过程中,更新ui,调用此方法
                }
                return null;
            }
            // 3、子线程更新ui调用的方法 发布进度
             
            @Override
            protected void onProgressUpdate(Integer... values) {
                super.onProgressUpdate(values);
                tv.setText("当前进度:" + values[0] + "%");
            }
            // 4、耗时任务之后的逻辑
            @Override
            protected void onPostExecute(Void result) {
                super.onPostExecute(result);
                tv.setText("耗时任务了执行完毕了...");
            }
        }.execute();
    }
}
结果: