学习了一个网络图片查看器,具体代码如下:
public class MainActivity extends Activity {
protected static final int success = 1;
protected static final int fail = 2;
protected static final int error = 3;
private EditText et_path;
private ImageView iv;
private Button check;
private Handler handler=new Handler(){
public void handleMessage(android.os.Message msg){
switch(msg.what){
case success:
Bitmap bitmap=(Bitmap) msg.obj;
iv.setImageBitmap(bitmap);
break;
case fail:
Toast.makeText(MainActivity.this, (String)msg.obj, 1).show();
break;
case error:
Toast.makeText(MainActivity.this, (String)msg.obj, 1).show();
break;
}
};
};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
et_path = (EditText) findViewById(R.id.et_path);
iv = (ImageView) findViewById(R.id.iv);
check=(Button)findViewById(R.id.check);
check.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
final String path=et_path.getText().toString().trim();
new Thread(){
public void run(){
try{
URL url=new URL(path);
HttpURLConnection co=(HttpURLConnection)url.openConnection();
co.setRequestMethod("GET");
co.setConnectionTimeout(5000);
int code=co.getResponseCode();
if(code==200){
InputStream in=co.getInputStream();
Bitmap bitmap=BitmapFactory.decodeStream(in);
Message msg=Message.obtain();
msg.obj=bitmap;
msg.what=success;
handler.sendMessage(msg);
}else{
Message msg = Message.obtain();
msg.what = FAILED;
msg.obj = "请求失败";
handler.sendMessage(msg);
}
}catch(Exception e){
Message msg = Message.obtain();
msg.what = ERROR;
msg.obj = "出现异常";
handler.sendMessage(msg);
e.printStackTrace();
}
};
}.start();
}
});
}
}
其中,Message.obtain();是指能够复用旧消息,以达到减小内存占用的目的。