從網上找到適合個人的解決方案大概以下:
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