Android 如果我没有得到响应,则在某个特定的时间进行ProgressDialog

Android 如果我没有得到响应,则在某个特定的时间进行ProgressDialog,android,progressdialog,Android,Progressdialog,当我调用API并在收到服务器的响应后关闭它时,我正在使用一个ProgressDialog,但我希望这个ProgressDialog仅显示20秒。如果API响应在20秒内未出现,则此ProgressDialog将关闭,然后我也将关闭我的活动并显示1条消息。这是我的方法: myProgressDialog是在类级别定义的: ProgressDialog myProgressDialog; myProgressDialog= new ProgressDialog(FlyerActivity.this)

当我调用API并在收到服务器的响应后关闭它时,我正在使用一个
ProgressDialog
,但我希望这个
ProgressDialog
仅显示20秒。如果API响应在20秒内未出现,则此
ProgressDialog
将关闭,然后我也将关闭我的活动并显示1条消息。这是我的方法:

myProgressDialog是在类级别定义的:

ProgressDialog myProgressDialog;
myProgressDialog= new ProgressDialog(FlyerActivity.this);
myProgressDialog.setMessage("Loading");
myProgressDialog.setCancelable(false);
myProgressDialog.show();
myAPIcallingMethod();
private void myAPIcallingMethod(){
    someAPICall;
    if (myProgressDialog.isShowing()){
        myProgressDialog.dismiss();
    }
}
myAPIcallingMethod实现:

ProgressDialog myProgressDialog;
myProgressDialog= new ProgressDialog(FlyerActivity.this);
myProgressDialog.setMessage("Loading");
myProgressDialog.setCancelable(false);
myProgressDialog.show();
myAPIcallingMethod();
private void myAPIcallingMethod(){
    someAPICall;
    if (myProgressDialog.isShowing()){
        myProgressDialog.dismiss();
    }
}
现在在这里,如果API响应在20秒后没有出现,那么这个
ProgressDialog
将消失。

使用这个

  private static int TIME_OUT = 1000 * 20;
 new Handler(Looper.getMainLooper()).postDelayed(new Runnable()
                {
                    @Override
                    public void run()
                    {
                        //Do something here
                        progress.dismiss();
                    }
                }, TIME_OUT);
用这个

  private static int TIME_OUT = 1000 * 20;
 new Handler(Looper.getMainLooper()).postDelayed(new Runnable()
                {
                    @Override
                    public void run()
                    {
                        //Do something here
                        progress.dismiss();
                    }
                }, TIME_OUT);

使用处理程序设置所需的20秒延迟

Handler Handler=新处理程序(Looper.getMainLooper())

删除所有挂起的回调帖子和obj为令牌的已发送邮件。如果令牌为null,则将删除所有回调和消息


或者,您可以简单地在api请求上放置一个所需的超时值20秒

使用Handler设置所需的20秒延迟

Handler Handler=新处理程序(Looper.getMainLooper())

删除所有挂起的回调帖子和obj为令牌的已发送邮件。如果令牌为null,则将删除所有回调和消息


或者,您可以简单地在api请求上放置一个所需的超时值20秒

我的方法是将APICall上的
超时设置为20秒。然后有一个特定的回调,这反过来可以关闭对话框


我看不出你的APICall是如何工作的,所以在这一点上我真的帮不了你

我的方法是将APICall上的
超时设置为20秒。然后有一个特定的回调,这反过来可以关闭对话框


我看不出你的APICall是如何工作的,所以在这一点上我真的帮不了你

您可能应该在APICall上设置20秒的超时限制,然后对此进行特定的回调,这将能够关闭您的对话框。@raymondelacroix这是一种更好的方法。您可能应该在APICall上设置20秒的超时限制,然后对此进行特定的回调,这将反过来能够关闭您的对话框。@raymondelacroix这是一个非常好的方法。唯一的一件事是,如果在20秒内没有响应,我必须用一些消息关闭此活动,如果我在从API获得结果后使用此方法,这也将在该条件下关闭应用程序。唯一的一件事是,如果在20秒内没有响应,我必须关闭此活动并显示一些消息,如果我在从API获得结果后使用此方法,这也将在该条件下关闭应用程序。