从网上找到适合个人的解决方案大概以下:
java
需求:主线程中给ImageView赋值一个路径。android
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()中ide
StrictMode.setThreadPolicy(new StrictMode.ThreadPolicy.Builder().detectDiskReads(). detectDiskWrites().detectNetwork().penaltyLog().build()); StrictMode.setVmPolicy(new StrictMode.VmPolicy.Builder().detectLeakedSqlLiteObjects(). detectLeakedClosableObjects().penaltyLog().penaltyDeath().build());
大功告成,但愿能帮到大家ui