在一段时间后删除对话框

时间:2017-01-04 13:06:32

标签: android dialog handler

public void isWaitingResponse (boolean isWaiting) {

    if (isWaiting && dialogLock == null) {

        dialogLock = new Dialog(this, android.R.style.Theme_Panel);
        dialogLock.setCancelable(false);
        dialogLock.show();

        // ToDo: If this dialog is still showing after 10 seconds
        // Call the primary method within and activate the "else"
        // condition code below to remove dialog, and clear app
        // state for further communication

        final Handler handler = new Handler();
        handler.postDelayed(new Runnable() {
            @Override
            public void run() {
                if (isWaiting && dialogLock != null) {
                    // Recursively call this method as false
                    isWaitingResponse(false);
                }
            }
        }, 5000);

    } else if (!isWaiting) {

        if (dialogLock != null) {

            dialogLock.dismiss();
            dialogLock = null;

        }

    }

}

正如上面代码中的注释中所指出的,这确实有效并且正确地完成了我需要它。我只是想知道我是否要离开处理程序,或者是否需要进行任何额外的清理以确保在活动代码中不会留下任何垃圾。不熟悉处理程序。

更新 我想确保在对话框关闭时不会触发此处理程序(此方法是使用false参数输入的)。因此,在错误检查时,如果处理程序有一个延迟的帖子,该处理程序应该与对话框一起被解雇。我必须确保以后的请求不会因前一个请求的延迟超时而被驳回。

已解决,我自己发布的答案 - 感谢Yessine。

1 个答案:

答案 0 :(得分:1)

显示对话框后显示此代码,它将在10秒后运行

 new Timer().schedule(new TimerTask() {
     public void run() {
     dialogLock.dismiss();
      }}, 10000);//time in milliseconds