【问题标题】:Android Dialog open before running Thread.sleep(1000) loop在运行 Thread.sleep(1000) 循环之前打开 Android 对话框
【发布时间】:2014-09-28 16:57:14
【问题描述】:

我正在尝试打开一个 dialog 框,然后它在 dosubmit() 中运行一个方法,该方法带有一个正在检查 RunnableFuture 的结果的 Thread.sleep(1000) 循环。

似乎覆盖setOnShowListener 不起作用。

    private void dosubmitdialog(){
        mDialogloading = new ProgressDialog(mActivity);
        mDialogloading.setCanceledOnTouchOutside(false);
        mDialogloading.setCancelable(false);
        mDialogloading.setMessage("Uploading data ...");
        mDialogloading.setOnShowListener(new DialogInterface.OnShowListener() {
            @Override
            public void onShow(DialogInterface dialog) {
                dosubmit();
            }
        });
        mDialogloading.show();
    }

我还可以使用什么其他方法?

【问题讨论】:

    标签: android multithreading dialog


    【解决方案1】:

    不要使用Thread.sleep(1000),而是使用Handler.postDelayed()在1000之后调用dosubmit();

     public void onShow(DialogInterface dialog) {
        Handler handler=new Handler();
        handler.postDelayed(new Runnable() {
           @Override
           public void run() {
                handler.removeCallbacksAndMessages(null);
                dosubmit();
            }
        }, 1000);
       }
    

    【讨论】:

    • @K3NN3TH :不要使用Thread.sleep,因为 sleep 方法会冻结 UI 主线程。尝试使用处理程序
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-03-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-07-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多