从网上找到适合我的的解决方案大概如下:
需求:主线程中给ImageView赋值一个路径。
Handler handler = new Handler() {
public void handleMessage(android.os.Message msg) {
//这里调用了要显示图片的代码
new LongTimeTask().execute("获取的路径");
}
};
private class LongTimeTask extends AsyncTask<String, Void, String> {
@Override
protected String doInBackground(String... params){
try {
//线程睡眠2秒,模拟耗时操作,这里面的内容Android系统会自动为你启动一个新的线程执行
Thread.sleep(2000);
}
catch (InterruptedException e){
e.printStackTrace();
}
return params[0];
}
@Override
protected void onPostExecute(String result){
//更新UI的操作,这里面的内容是在UI线程里面执行的
try {
URL url = new URL(result);
//显示图片
iv_photo.setImageBitmap(BitmapFactory.decodeStream(url.openStream()));
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
另外还必须有两句代码写在onCreate()中
StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder().detectDiskReads().
detectDiskWrites().detectNetwork().penaltyLog().build());
StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder().detectLeakedSqlLiteObjects().
detectLeakedClosableObjects().penaltyLog().penaltyDeath().build());
大功告成,希望能帮到你们