Попробуйте это.,
ли это в OnCreate()
Handler handler;
handler = new Handler() {
@Override
public void handleMessage(Message msg) {
if (msg.what == 0) {
Pdialog.dismiss();
}
};
И теперь используют поток для загрузки файлов на сервер. Изменить этот кусок кода,
public class Activity001 extends Activity implements OnClickListener
{
public void onClick(View view)
{
ProgressDialog progressDialog = ProgressDialog.show(Activity001.this, "", "wait ", true, false);
Thread ProgressThread = new Thread() {
@Override
public void run() {
try {
// Sending some files to server .. take time .. - (method that take 1-2 minuts)
} catch(InterruptedException e) {
// do nothing
} finally {
handler.sendEmptyMessage(0);
}
}
};
ProgressThread.start();
}
}
EDIT
диалог Прогресс представляет собой легкий объект веса. Он не имеет приоритета над другими задачами, которые происходят в основном потоке. Например, когда вы вызываете шоу() выполнения диалога выполнения(), за которым следует процесс http или что-то подобное в основном потоке, он не позволит приоритету светлого приоритетного диалога. Таким образом, очевидно, что он появится только в конце процесса http.
Хорошо, что вы показываете прогресс, но ... вы также скрываете это, прежде чем будет выполнено асинхронное действие ... (у вас проблемы с потоком кода?) ... в вашем примере кода: 1.show progress 2. ** просто запустите ** асинхронную работу. 3.hide progress ... – Selvin
Нет, нет. Извините за недоразумение ... «отправка некоторых файлов» - это какой-то метод, который вызывается, и этот метод занимает время - (1-2 минуты) после того, как этот метод будет выполнен - код отклонит progressdialog. – Yanshof
этот код не будет работать ... это вызовет ANR ... используйте AsyncTask для этого ... есть много примеров здесь или на google ... почему он не работает ... вы просто блокируете поток ui (onclick называется ui thread), а сообщения ui (например, fx. draw, other onclick, ontouch и т. д.) не обрабатываются. – Selvin