簡體   English   中英

從SD卡讀取文件時如何顯示進度欄

[英]How show progress bar while read file from SD card

我正在從SD卡讀取文件列表。 但是我的應用程序在通過存儲循環時凍結了。 所以我想在顯示所有文件之前顯示一個進度條。

public ArrayList<MyFile> getPlayList() {
    File home = Environment.getExternalStorageDirectory();
    File[] listFiles = home.listFiles();
    if (listFiles != null && listFiles.length > 0) {
        for (File file : listFiles) {
            if (file.isDirectory()) {
                scanDirectory(file);
            } else {
                addFileToList(file);
            }
        }
    }

    return songsList;
}



@OnClick(R.id.btn_browser)
public void onClickBrowser() {
    // want to show progress bar here when user click a button
    if (fileList == null)
        fileList = fileManager.getPlayList();

    ListDialog listDialog = new ListDialog(this, fileList,
            this, android.R.style.Theme_Black_NoTitleBar_Fullscreen);
    listDialog.show();
}

您需要使用異步調用getPlayList() 有多種使用方法,我建議使用AsyncTask因為獲取文件的時間應少於3s。 如果更多,那么您需要考慮其他一些背景解決方案。

在您的AsyncTask中,

  1. onPreExecute()期間顯示進度指示器,

  2. getPlayList()中執行doInBackground()

  3. 最后駁回進度指示器,並顯示您ListDialogonPostExecute()

話雖這么說,如果獲取播放列表是一次性的事情,並且您可以肯定用戶無論如何都會點擊R.id.btn_browser ,那么您可以預取播放列表。 那只是一個設計建議。

暫無
暫無

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

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