如何从另一个线程显示警报对话?

时间:2017-10-11 21:36:18

标签: java android multithreading

我有一个应用程序,其中有一个类与布局相关联。然后,此布局在另一个线程中运行一个进程,以避免冻结布局。最终,第二个线程中的代码应该在第一个线程中显示布局上的对话框。代码正在运行。我知道这是因为我在最后加上了一份印刷声明,但对话并没有显示出来。

那么一旦线程完成,我该如何让对话显示出来?据我所知,我不能把它放到另一个线程中,所以我很难过。任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:1)

在onCreate()

中创建Handler的对象
 mHandler=new Handler();

然后

在线程中编写以下代码,以显示对话框或更新任何UI视图。

mHandler.post(new Runnable() {
    public void run(){

        AlertDialog.Builder builder = new AlertDialog.Builder(YourActivity.this);
        //Add all dialog prepaation code
    }
});

有关更多信息,请参阅Background processing in Android

答案 1 :(得分:0)

您需要使用线程中的runOnUiThread来访问您的视图并更新/编辑它。

runOnUiThread(new Runnable() {
                    @Override
                    public void run() {
                        btn.setText("#");
                        //show your dialog here
                       //do your work here
                    }
                });

如果您使用的是片段,请在getActivity()

之前添加runOnUiThread