您的位置:首页 > 移动开发 > Android开发

Android AsyncTask异步机制用法

2016-07-26 20:34 465 查看
package com.example.administrator.myapplication;

import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.media.tv.TvContract;
import android.os.AsyncTask;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.ImageView;

import java.io.IOException;
import java.io.InputStream;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;

import javax.xml.transform.Result;

public class MainActivity extends AppCompatActivity {
private Button button;
private ImageView imageView;

String string = "http://img1.imgtn.bdimg.com/it/u=2647695598,824525199&fm=21&gp=0.jpg";

//图片网址
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
button = (Button) findViewById(R.id.myButton);
imageView = (ImageView) findViewById(R.id.myImageView);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
shuchu("点击了按钮");
//点击按钮改变图片
new idea(imageView).execute(string);
//传入ImagineView和网络地址
}
});
}

public class idea extends AsyncTask<String, Double, Bitmap> {//第一个是传入参数,第二个是进度,第三个是结果
private ImageView ima;
private Bitmap bit;

public idea(ImageView ima) {
this.ima = ima;
}

@Override
protected void onPostExecute(Bitmap bitmap) {
ima.setImageBitmap(bitmap);
//后台执行完毕的结果
}

@Override
protected Bitmap doInBackground(String... strings) {
URL imageUrl = null;
shuchu("开始联网");
try {
imageUrl = new URL(string);
} catch (MalformedURLException e) {//后来执行
e.printStackTrace();
}
try {
HttpURLConnection conn = (HttpURLConnection) imageUrl.openConnection();
conn.connect();
InputStream is = conn.getInputStream();
bit = BitmapFactory.decodeStream(is);
is.close();
} catch (IOException e) {
e.printStackTrace();
}
shuchu("结束联网");
return bit;

}
}

public void shuchu(String s) {
Log.v("a", s);
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息