【问题标题】:Showing AlertDialog from not UI thread从非 UI 线程显示 AlertDialog
【发布时间】:2011-12-18 21:05:56
【问题描述】:

我正在后台连接蓝牙,我想在处理套接字之前显示警报或 toast。

这是我的代码

mmSocket.connect();
connectionHandler.post(new Runnable() {
    public void run() {
        AlertDialog.Builder builder = new AlertDialog.Builder(BluetoothSampleActivity.this);
        builder.setMessage("conneted");
        builder.show();
    }
});
manageConnectedSocket(mmSocket);

但据我了解,只有当这将结束他的工作时才会显示警报。如何在执行 manageConnectedSocket(mmSocket); 之前显示警报?

P.S.:我试过 runOnUiThread - 它没有帮助

【问题讨论】:

  • 这段代码在哪里运行?服务、AsyncTask 等?

标签: android multithreading dialog


【解决方案1】:

我建议将您的逻辑从普通线程移至异步任务。每当您必须做繁重的工作并与 UI 交互时,AsyncTask 是最佳实践。

在 preExecute() 方法上显示对话框或更新 UI,在 doInBackground 上执行所需操作,在 onPostExecute 上关闭对话框或重新更新 UI。

这里是AsyncTask doc

另外,如果您需要在后台显示您正在执行的工作的进度,这要归功于 publishProgress/onProgressUpdate 方法。

【讨论】:

    猜你喜欢
    • 2011-02-24
    • 2016-06-08
    • 2014-10-24
    • 2018-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-17
    • 1970-01-01
    相关资源
    最近更新 更多