当发出对Web服务的调用时,我需要向用户显示一条消息“与服务器通信...请等待几秒钟”。目前我正在使用Toast.makeText
来显示消息。出于某种原因,我没有看到弹出的消息。但有趣的是,当我评论Web服务方法调用时,我看到了Toast消息。
Toast.makeText(this, "Communicating to the Server...Please wait for few seconds",
Toast.LENGTH_SHORT).show();
//webservice code goes here...
或满足此要求的任何其他替代方案也可以。
答案 0 :(得分:1)
您是否考虑过使用AysncTask。使用AsyncTask
,您可以在onPreExecute()
上显示包含邮件的对话框。
答案 1 :(得分:0)
不要混用UI代码和网络代码。请参阅:http://developer.android.com/resources/articles/painless-threading.html
答案 2 :(得分:0)
您可以使用AsyncTask
来投放您的服务,并在Toast
中显示onPreExecute
。
或者您可以使用普通Thread
但是,您需要使用Handler
。方法如下:
class MyActivity extends Activity
{
final Handler mHandler;
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(...);
mHandler = new Handler();
...
}
void showToast(final String text)
{
mHandler.post(new Runnable()
{
@Override
public void run()
{
Toast.makeText(MyActivity.this, text, Toast.LENGTH_LONG).show();
}
});
}
class MyThread implements Runnable
{
@Override
public void run()
{
showToast("your custom text");
//your service code
}
}
}
以下是您启动该主题的方法:
Thread thread = new Thread(new MyThread());
thread.run();
答案 3 :(得分:0)
使用AsyncTask在线程中运行您的Web服务调用,或者只创建一个类似的线程
new Thread(new Runnable() {
public void run() {
// WS call here
}
}).start();
请注意,如果您创建自己的线程,则只能从UI线程更新UI,因此您需要使用Handler.post()或sendMessage()在UI线程上运行UI更新。
http://developer.android.com/reference/android/os/AsyncTask.html http://developer.android.com/reference/android/os/Handler.html