Установить таймаут Диалог в Android?

Я хочу установить таймаут для диалога (диалог прогресса) в android, чтобы диалоговое окно исчезло через какое-то время (если нет ответа на какое-либо действие!)

Ответ 1

Тот же подход, что и в этот пост, проверен на работу (с длинным вместо float):

public void timerDelayRemoveDialog(long time, final Dialog d){
    new Handler().postDelayed(new Runnable() {
        public void run() {                
            d.dismiss();         
        }
    }, time); 
}

Ответ 2

Вы всегда можете создать класс под названием ProgressDialogWithTimeout и переопределить функциональность метода show, чтобы вернуть ProgressDialog и установить таймер, чтобы делать то, что вы хотите, когда этот таймер отключается. Пример:

private static Timer mTimer = new Timer();
private static ProgressDialog dialog;

public ProgressDialogWithTimeout(Context context) {
    super(context);
    // TODO Auto-generated constructor stub
}

public ProgressDialogWithTimeout(Context context, int theme) {
    super(context, theme);
    // TODO Auto-generated constructor stub
}

public static ProgressDialog show (Context context, CharSequence title, CharSequence message)
{
    MyTask task = new MyTask();
            // Run task after 10 seconds
    mTimer.schedule(task, 0, 10000);

    dialog = ProgressDialog.show(context, title, message);
    return dialog;
}

static class MyTask extends TimerTask {

    public void run() {
        // Do what you wish here with the dialog
        if (dialog != null)
        {
            dialog.cancel();
        }
    }
}

Тогда вы бы назвали это в своем коде следующим образом:

ProgressDialog progressDialog = ProgressDialogWithTimeout.show(this, "", "Loading...");