AsyncTask


import android.app.Activity;
import android.os.AsyncTask;
import android.os.Bundle;
import android.os.SystemClock;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.ProgressBar;
import android.widget.TextView;

public class MainActivity extends Activity {

    TextView tv;
    ProgressBar pb;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        
        
        tv = (TextView) findViewById(R.id.tv);
        pb = (ProgressBar) findViewById(R.id.pb);
        pb.setMax(3);
        
        new MyAsyncTask().execute("");

        // 異步任務
        // AsyncTask 抽象類
        // <Params, Progress, Result>
        new AsyncTask<String, Integer, String>() {

            //是一個線程方法  處理耗時操作
            @Override
            protected String doInBackground(String... params) {
                Log.i("==============", params[0]);
                Log.i("==============", params[1]);
                Log.i("==============", params[2]);
                
                String result = "";
                for (int i = 0; i < params.length; i++) {
                    SystemClock.sleep(1000);
                    publishProgress(i+1);
                    result += params[i];
                }
                return result;
            }

            //當doInBackground return以後執行  
            //主線程方法  可以更新UI
            @Override
            protected void onPostExecute(String result) {
                tv.setText(result);
                super.onPostExecute(result);
            }

            //在doInBackground  執行之前調用的方法   做一些數據的初始化工作
            @Override
            protected void onPreExecute() {
                // TODO Auto-generated method stub
                
                super.onPreExecute();
            }

            //onProgressUpdate可是根據需求來調用  當調用了publishProgress(values)方法的時候  該方法就會被調用
            //主線程方法  可以更新UI
            @Override
            protected void onProgressUpdate(Integer... values) {
                pb.setProgress(values[0]);
                super.onProgressUpdate(values);
            }
            
            

        }.execute("a","b","c");
    }

    class MyAsyncTask extends AsyncTask<String, Integer, String>{

        @Override
        protected String doInBackground(String... params) {
            // TODO Auto-generated method stub
            return null;
        }
        
    }
    
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章