Java Android处理显示

Java Android处理显示,java,android,multithreading,Java,Android,Multithreading,我有一个函数,它创建套接字连接,然后等待响应。在此期间,我不希望用户能够单击任何按钮,否则会导致应用程序崩溃 因此,在函数开始时,我会执行以下操作: public void Checkout() { AlertDialog.Builder builder2 = new AlertDialog.Builder(NuPos_testActivity.this); builder2.setMessage("Processing");

我有一个函数,它创建套接字连接,然后等待响应。在此期间,我不希望用户能够单击任何按钮,否则会导致应用程序崩溃

因此,在函数开始时,我会执行以下操作:

 public void Checkout()
    {
        AlertDialog.Builder builder2 = new     AlertDialog.Builder(NuPos_testActivity.this);
        builder2.setMessage("Processing");
         AlertDialog alert2 = builder2.create();
         alert2.show();
这将使屏幕变灰,并显示处理,直到服务器返回响应。我的问题是,虽然这是函数顶部的第一件事,但它只在其他所有事情之后运行。我不明白为什么


为了更清楚地了解我的问题:我在代码之前运行了一个警报框,但它只在代码运行完毕后显示。如何修复此问题?

显示
警报对话框不会停止代码。它只是阻止用户交互。如果要将进一步的代码执行延迟到准备就绪为止,请查看类似于
ASyncTask
的东西,它有一个
onPostExecute()
方法,用于在任务完成时通知您。

听起来像上面的代码示例和
套接字的代码都在同一
线程中运行(即
UIThread
)。如果是这种情况,Android通常会先执行“处理”代码,然后再延迟绘制(因为绘制优先级较低)


您需要将套接字代码移动到一个单独的
线程
,这样它就可以独立于
UIThread
运行,这应该让Android有时间更早地显示
警报对话框。

我希望执行代码。我只是不希望用户在套接字等待响应时能够单击stuff。但正如我所说,它运行套接字连接并在屏幕变灰并显示处理之前获得响应。如果您的问题已被回答,或者不再有效,请“勾选”以选择最合适的答案,以便所有人都知道问题已得到解决。谢谢。