set timeout Dialog in android?

前端 未结 2 1416
醉梦人生
醉梦人生 2021-02-05 22:25

I want to set timeout for Dialog (progress dialog) in android , to make the dialog disappears after a period of time (if there is No response for some action !)

相关标签:
2条回答
  • 2021-02-05 22:29

    The same approach as in this post is verified to work (with long instead of float):

    public void timerDelayRemoveDialog(long time, final Dialog d){
        new Handler().postDelayed(new Runnable() {
            public void run() {                
                d.dismiss();         
            }
        }, time); 
    }
    
    0 讨论(0)
  • 2021-02-05 22:32

    You could always make a class called ProgressDialogWithTimeout and override the functionality of the show method to return a ProgressDialog and set a timer to do what you wish when that timer goes off. Example:

    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();
            }
        }
    }
    

    Then you would call this in your code as so:

    ProgressDialog progressDialog = ProgressDialogWithTimeout.show(this, "", "Loading...");
    
    0 讨论(0)
提交回复
热议问题