簡體   English   中英

加載圖片時未顯示進度對話框

[英]Progress dialog not showing while loading pictures

我必須將幾張圖片加載到主線程中,並且要在發生這種情況時顯示一個加載對話框,但是以某種方式我無法顯示進度對話框...

我的代碼如下:

private ProgressDialog progress;

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

    progress = ProgressDialog.show(this, "",getString(R.string.background_loading), true);

    LoadBackgrounds loadB = new LoadBackgrounds();
    new Thread(loadB).start();

}

public class LoadBackgrounds implements Runnable {
     @Override
     public void run() {

        runOnUiThread(new Runnable() {
            @Override
            public void run() {
                loadPictures();
                progress.dismiss();
            }
        });
     }
 }

必須在runOnUiThread內部調用loadPictures()因為它會修改視圖。 那么,為什么在加載圖片時不顯示進度對話框?

我不確定100%,但這是我的猜測:

  1. 您創建了一個應與UIThread分開運行的線程,但在其中調用runOnUiThread()將該線程與UIThread合並。
  2. 您創建了一個在線程中運行的可運行對象,而該線程又在另一個線程上運行了。 我想你應該明白那個廢話
  3. 您的loadPictures()可能會減慢UIThread的速度,這可能是您首先看不到進度對話框,並且在完成加載后便將其關閉的原因。
  4. 我還猜測您會收到一個ANR對話框(應用程序未響應),或者看到很多“ Skipped X frames! The application may be doing too much work on its main thread. Skipped X frames! The application may be doing too much work on its main thread. logcat輸出中的消息。

我的建議取決於您的loadPictures()方法的實際作用:使用AsyncTask,或者在訪問服務器以獲取圖片時,檢查VolleyRetroFit等庫並使用它們獲取數據。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM