AsyncTask异步

**我个人认为,异步是省略了,线程new Thread(){}.start(), 以及不用我们定义handler,重写handler中的方法,直接在AnysTask中直接对我们要解析的 数据,处理,并更新UI界面
在AnysTask中我们经常用到了,四个方法:
1. onPreExecute()://        开启线程之前的数据
2.doInBackground(String... params)://请求网络数据
3.onPostExecute(Bitmap result)//    获取子线程上的数据,并展示更新UI界面
4.onProgressUpdate(String... values)://     在主线程中更新**
public class MainActivity extends Activity {

    private ProgressBar pb;
    private ImageView image;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        pb = (ProgressBar) findViewById(R.id.p_pb);
        image = (ImageView) findViewById(R.id.i_image);
    }
    public void search(View view){
        MyAsyncTask as=new MyAsyncTask();

        as.execute("http://10.1.7.114:8080/image/r.jpg");
    }
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }
    public class MyAsyncTask extends AsyncTask<String, String, Bitmap> {
        //请求网络数据
        @Override
        protected Bitmap doInBackground(String... params) {
            // TODO Auto-generated method stub

            return getData(params[0]);
        }
// 获取子线程上的数据,并展示
        @Override
        protected void onPostExecute(Bitmap result) {
            // TODO Auto-generated method stub
            super.onPostExecute(result);
            pb.setVisibility(View.GONE);
            image.setImageBitmap(result);
        }
// 开启线程之前的数据
        @Override
        protected void onPreExecute() {
            // TODO Auto-generated method stub
            pb.setVisibility(View.VISIBLE);
            super.onPreExecute();
        }
// 在主线程中更新
        @Override
        protected void onProgressUpdate(String... values) {
            // TODO Auto-generated method stub
            super.onProgressUpdate(values);
        }
    }   
    public Bitmap getData(String path){

        BitmapUtils u=new BitmapUtils(this);
        u.display(image, path);
        return null;
    }
}

你可能感兴趣的:(AsyncTask)