当用户按下某个按钮时,我希望当应用从我的网络服务器获取某些信息时,会显示一条小Toast.makeText()
条消息,说Contacting server...
。
问题是Java的HttpClient.Execute()方法是同步的,因此它会阻止Toast显示,直到请求完成。
在发送请求时是否可以显示Toast?
e.g。
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();
此代码只是在请求完成之后快速闪烁第一个Toast ,然后显示第二个Toast。
答案 0 :(得分:6)
要显示Toast
消息,您需要从UI线程调用show()
对象上的Toast
。因此,将您的Toast
对象放在UI线程运行的位置(例如AsyncTask
的{{1}},onPreExecute()
等。
我假设您的连接是在一个单独的线程中完成的。
答案 1 :(得分:3)
正如Pompe所说,你的HttpClient调用肯定应该在它自己的线程上,并且AsyncTask是一个很好的方式去那里。如果您想在用户开展业务时向用户显示某些内容,您可能需要使用{HttpClient调用完成时可以忽略的ProgressDialog(或其他一些Dialog)。然后,您可以显示Toast或任何您想要显示网络呼叫结果的内容。