执行同步服务器请求时显示消息

时间:2014-05-08 07:06:24

标签: android

我正在使用

同步方式拨打电话的应用
class HttpUtil extends AsyncTask<Void,Void,String>
{...}

HttpUtil httpUtil = new HttpUtil();

httpUtil.execute((Void[]) null).get();

这将调用AsyncTask方法。

问题:

由于我们执行了UI阻止请求,因此UI中未显示旋转轮。即使我添加了一个toast,然后在请求完成后显示toast。

如果我进行异步调用,那么我会在UI未被阻止的情况下获得旋转轮

预期:

我还需要为阻止的请求显示一个旋转轮(完成添加get()方法)。

1 个答案:

答案 0 :(得分:1)

不要在网络操作中使用get()。只是不要。您的应用程序将冻结,或者被系统杀死,或者用户会因为您的应用阻止系统的整个用户界面而感到沮丧。这绝对是不可接受的,并且没有理由为什么精心设计的应用程序应该诉诸于此。

您在AsyncTask onPreExecute()中启用了不确定的进度,并在onPostExecute()中将其关闭。这两种方法总是在UI威胁上运行。请参阅documentation for AsyncTask

此外,您不需要将Void[] null传递给execute()来电 - 只需传递任何内容,这将导致空数组空。

如果任何其他操作或UI更新取决于请求的结果,请在onPostExecute中执行这些更新。如果你想创建模态基本上&#34;停止&#34;请求运行时的UI,然后显示一个对话框,但请提供取消选项。