public class RequestImageActivity extends Activity {
private EditText input;
private Button load;
private ImageView image;
private final int UPDATE_UI = 1;
@SuppressLint("HandlerLeak")
private Handler mHandler = new Handler(new Handler.Callback() {
@Override
public boolean handleMessage(Message msg) {
switch (msg.what) {
case UPDATE_UI :
//string
//bitmap
image.setImageBitmap((Bitmap) msg.obj);
//image.setImageResource();
break;
}
return true;
}
});
/*{
@Override public void handleMessage(Message msg) {
super.handleMessage(msg);
}
}*/;
/*private Thread thread = new Thread(
new Runnable() {
@Override public void run() {
}
}
){
@Override public void run() {
super.run();
}
};*/
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_image);
input = findViewById(R.id.input);
load = findViewById(R.id.load);
image = findViewById(R.id.image);
input.setText("http://pic28.photophoto.cn/20130818/0020033143720852_b.jpg");
load.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View view) {
if(!NetUtil.hasNetwork(RequestImageActivity.this)){
Toast.makeText(RequestImageActivity.this,"没有可用的网络",Toast.LENGTH_LONG).show();
//TODO 跳转到设置
return;
}
new Thread(new Runnable() {
@Override
public void run() {
requestImage(input.getText().toString());
}
}).start();
}
});
}
private void requestImage(String urlStr) {
try {
URL url = new URL(urlStr);
HttpURLConnection urlConnection = (HttpURLConnection) url.openConnection();
urlConnection.setRequestMethod("GET");
// wifi 5
// 4g 10
//判断网络类型
boolean isMobileNetwork = NetUtil.isMobileNetwork(RequestImageActivity.this);
int timeOut;
if(isMobileNetwork) {
timeOut = 10000;
}else{
timeOut = 5000;
}
urlConnection.setConnectTimeout(timeOut);
urlConnection.setReadTimeout(timeOut);
int responseCode = urlConnection.getResponseCode();
if(responseCode == 200) {
Bitmap bitmap = BitmapFactory.decodeStream(urlConnection.getInputStream());
//更新 ui
mHandler.sendMessage(mHandler.obtainMessage(UPDATE_UI,bitmap));
}
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}