2012-03-29 48 views
1

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

这样在我做了以下功能开始:

public void Checkout() 
    { 
     AlertDialog.Builder builder2 = new  AlertDialog.Builder(NuPos_testActivity.this); 
     builder2.setMessage("Processing"); 
     AlertDialog alert2 = builder2.create(); 
     alert2.show(); 

这变灰的屏幕和显示处理直至响应来自服务器返回。我的问题是,这是在函数顶部的第一件事情,它只在一切之后运行。我不明白为什么?

为了更清楚我的问题:我在代码之前运行一个警告框,但它只在代码运行完毕后才显示。我该如何解决?

+0

如果您的问题已被解答,或者不再有效,请勾选以选择最合适的答案,以便大家都知道问题已得到解决。谢谢。 – wattostudios 2012-05-14 13:28:14

回答

0

显示一个AlertDialog不停止代码。它只是阻止用户交互。如果您想延迟进一步的代码执行直到您准备好,请查看类似ASyncTask的方法,该方法有一个onPostExecute()方法以在任务完成时通知您。

+0

我想让代码执行。我只是不希望用户能够点击的东西,而Socket正在等待响应。但正如我所说的,它在运行套接字连接并获取响应之前灰色显示屏幕并显示处理。 – David 2012-03-29 12:53:48

0

听起来像上面的代码示例和Socket的代码在同一个Thread(即UIThread)中运行。如果是这种情况,Android通常会首先执行“处理”代码,并延迟绘画直到之后(因为绘画的优先级较低)。

您需要将套接字代码移入单独的Thread,以便它可以独立于UIThread运行,这将允许Android在更早的时间显示AlertDialog