ProgressDialog не появляется сразу - PullRequest
3 голосов
/ 09 марта 2012

У меня есть фрагмент с несколькими кнопками, при нажатии кнопки он должен показать ProgressDialog, загрузить массив растровых изображений и показать его во фрагменте в галерее, отклонить ProgressDialog.

Но ProgressDialog не отображается сразу, это занимает около 1 или 2 секунд, и он просто мигает в тот момент, когда моя галерея отображается.

Я делаю это после клика:

try{
    progress = ProgressDialog.show(activity, "", "Loading images", true);

    //load images
    //show gallery

}catch(){
    //...
}finally{
    handler.sendEmptyMessage(0);
}

Мой обработчик в onCreate:

handler = new Handler() {
    public void handleMessage(Message msg) {
         progress.dismiss();
    }
};

Я использую Android 3.1

Logcat показывает что угодно: (

03-09 13:17:32.310: D/DEBUG(5695): before show()
03-09 13:17:32.350: D/DEBUG(5695): after show()

Ответы [ 2 ]

1 голос
/ 09 марта 2012

Вы загружаете изображения в основной поток пользовательского интерфейса - вы должны сделать это в фоновом режиме, так как это может привести к тому, что ваш пользовательский интерфейс перестанет отвечать на запросы (и ваш ProgressDialog может появиться в неподходящее время).

Вы должны использовать AsyncTask для загрузки изображений в фоновом режиме.

Отображение ProgressDialog в AsyncTask.onPreExecute, загрузка изображений в AsyncTask.doInBackground и закрытие диалогового окна в AsyncTask.onPostExecute.

1 голос
/ 09 марта 2012

Документация мало что говорит о setIndeterminate (логическое значение) , поэтому я не уверен. Но я использую это в своем приложении, и оно работает:

ProgressDialog fDialog = new ProgressDialog(your-context);
fDialog.setMessage(your-message);
fDialog.setIndeterminate(true);
// fDialog.setCancelable(cancelable);
fDialog.show();

Не могли бы вы попробовать?

...