请教一个android ,handle的问题,下面的代码运行有问题package com.neusoft.xmlresource;import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.net.URI;
import java.net.URISyntaxException;import org.apache.http.HttpResponse;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.HttpClient;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.DefaultHttpClient;
import org.xmlpull.v1.XmlPullParser;
import org.xmlpull.v1.XmlPullParserException;import android.app.Activity;
import android.content.res.Resources;
import android.content.res.XmlResourceParser;
import android.net.Uri;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.view.Menu;
import android.widget.ImageView;public class MainActivity extends Activity { ImageView mImageView = null;

Handler handler = new Handler(){
@Override
public void handleMessage(Message msg) {

HttpClient client = new DefaultHttpClient();
HttpGet request = new HttpGet();
InputStream in = null;
FileOutputStream out = null;

try {
request.setURI(new URI("http://192.168.1.180/images/1.png"));
HttpResponse response = client.execute(request);
out = new FileOutputStream("/mnt/sdcard/1.png");
in = response.getEntity().getContent();
byte[] buffer=new byte[1024];
for(int len=0;(len=in.read(buffer))!=-1;){
out.write(buffer,0,len);
}

} catch (URISyntaxException e) {
e.printStackTrace();
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}finally{
try {
out.flush();
in.close();
out.close();
} catch (IOException e) {

e.printStackTrace();
}

}

}



};
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);

mImageView = (ImageView)findViewById(R.id.imageView);
handler.sendEmptyMessage(1);

/*
new Thread(new Runnable(){

@Override
public void run(){
HttpClient client = new DefaultHttpClient();
HttpGet request = new HttpGet();
InputStream in = null;
FileOutputStream out = null;
try {
request.setURI(new URI("http://192.168.1.180/images/1.png"));
HttpResponse response = client.execute(request);
out = new FileOutputStream("/mnt/sdcard/1.png");
in = response.getEntity().getContent();
byte[] buffer=new byte[1024];
for(int len=0;(len=in.read(buffer))!=-1;){
out.write(buffer,0,len);
}

} catch (URISyntaxException e) {
e.printStackTrace();
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}finally{
try {
out.flush();
in.close();
out.close();
} catch (IOException e) {

e.printStackTrace();
}

}
}

}).start();*/

mImageView.setImageURI(Uri.fromFile(new File("/mnt/sdcard/1.png")));



} @Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.activity_main, menu);
return true;
}

}
什么原因呢?
如果不用handler,改用下面的执行,则没有问题。 new Thread(new Runnable(){

@Override
public void run(){
HttpClient client = new DefaultHttpClient();
HttpGet request = new HttpGet();
InputStream in = null;
FileOutputStream out = null;
try {
request.setURI(new URI("http://192.168.1.180/images/1.png"));
HttpResponse response = client.execute(request);
out = new FileOutputStream("/mnt/sdcard/1.png");
in = response.getEntity().getContent();
byte[] buffer=new byte[1024];
for(int len=0;(len=in.read(buffer))!=-1;){
out.write(buffer,0,len);
}

} catch (URISyntaxException e) {
e.printStackTrace();
} catch (ClientProtocolException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}finally{
try {
out.flush();
in.close();
out.close();
} catch (IOException e) {

e.printStackTrace();
}

}
}

}).start();
这是什么原因,诸位老师给分析一下。android  多线程