2011-07-18 143 views
1

当用户按下按钮时,我想要一个小的Toast.makeText()消息显示出类似于Contacting server...的内容,而应用程序从我的Web服务器获取一些信息。Android Toast.makeText()没有显示

问题是Java的HttpClient.Execute()方法是同步的,所以它阻止Toast显示直到请求完成。

请求正在发送时,是否有方法让Toast显示?

例如

Toast.makeText(myContext, "Contacting server...", Toast.LENGTH_SHORT).show(); 
String result = WebServer.Contact("www.mywebsite.com"); //A wrapper method 
Toast.makeText(myContext, "Result: " + result, Toast.LENGTH_SHORT).show(); 

此代码简单地闪烁先敬酒真快请求完成后,然后将它显示了第二个面包。

回答

3

正如Pompe所说,你的HttpClient调用肯定应该在它自己的线程上,而AsyncTask是一个很好的方法去那里。如果您想在用户业务中显示用户的某些内容,则可能需要使用您可以使用的ProgressDialog(或某些其他对话框),而不是在HttpClient调用完成时关闭。然后,您可以显示Toast或任何想要显示网络呼叫结果的内容。

6

为了显示Toast消息,您需要在UI线程的Toast对象上调用show()。因此,请将您的Toast对象放在您的UI线程运行的位置(例如,在AsyncTaskonPreExecute()onPostExecute()等中)。

我假设你的连接是在单独的线程中完成的。