【问题标题】:Progress dialog not shown on UI thread until another thread finishs在另一个线程完成之前,UI 线程上不会显示进度对话框
【发布时间】:2011-08-31 18:26:27
【问题描述】:

谁能告诉我为什么以下代码中的 ProgressDialog 直到线程完成后才显示在 UI 上?

Common.prog = ProgressDialog.show(cContext, "Please wait", "Checking Voucher...",  true);

final Handler handler = new Handler() {
    public void handleMessage(Message msg) {
        Common.prog.dismiss();
    }
};

Thread searchThread = new Thread() {  
    public void run() {
        processCoupon(voucherCodeEditText.getText().toString());
        handler.sendEmptyMessage(0);
    };
};
searchThread.run();

提前致谢:)

【问题讨论】:

  • 尝试将其设置为AsyncTask,而不是您拥有的线程。据我所知,这似乎是在 android 线程中做某事的“正确”方式。在onPreExecute()打开进度对话框,在doInBackground()查看凭证,在onPostExecute()关闭对话框

标签: android multithreading progressdialog


【解决方案1】:

调用start()方法:

searchThread.start();

run() 方法不在新线程中执行 Runnable。

如果您想返回 UI 线程,请使用 runOnUiThread()

【讨论】:

    猜你喜欢
    • 2011-11-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多