为了调用关系明确及安全,AsyncTask类在继承时要传入3个泛型,3个泛型的主要作用是一次的限定每一个方法传入的参数类型 。
execute(Params... params),方法的参数是类泛型的第一个参数类型,并将结果传入doInBackground()
onPreExecute()没有参数
doInBackground(String... params)由第一个参数类型限制传入的参数类型
onProgressUpdate(Integer... values)由第二个参数类型限制传入的参数类型
onPostExecute(Bitmap bitmap)由第三个参数类型限制传入的参数类型
调用顺序依次,所以返回结果也有限制
doInBackground的参数由execute参数原版传入
onProgressUpdate的参数由doInBackground的结果原版传入
调用
AnsyTry anys = new AnsyTry(mImageView);
anys.execute(getIntent().getStringExtra("path"));
class AnsyTry extends AsyncTask<String, Integer, Bitmap> {
private ImageView mImageView = null;
public AnsyTry(ImageView mImageView) {
super();
this.mImageView = mImageView;
}
@Override
protected Bitmap doInBackground(String... params) {
// TODO Auto-generated method stub
// 显示网络上的图片
Bitmap bitmap = null;
try {
URL myFileUrl = new URL(params[0]);
HttpURLConnection conn = (HttpURLConnection) myFileUrl
.openConnection();
conn.setDoInput(true);
conn.connect();
InputStream is = conn.getInputStream();
bitmap = BitmapFactory.decodeStream(is);
is.close();
} catch (IOException e) {
e.printStackTrace();
return null;
}
return bitmap;
}
@Override
protected void onPostExecute(Bitmap bitmap) {
// TODO Auto-generated method stub
mImageView.setImageBitmap(bitmap);
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Intent intent = new Intent(WelcomeSecond.this, MyWebActivity.class);
startActivity(intent);
WelcomeSecond.this.finish();
}
@Override
protected void onPreExecute() {
// TODO Auto-generated method stub\
}
@Override
protected void onProgressUpdate(Integer... values) {
// TODO Auto-generated method stub
}
}