android - 从服务器返回响应时完成 Activity ,但等待动画结束

标签 android android-activity android-animation

我通过 Volley 向服务器发送请求;并在发送后,增加一个显示请求数量的变量。

VolleyGeneral.getInstance().addToRequestQueue(jsonObj,TAG);
numberOfReq++;

然后,当我收到响应时,减少该变量。

@Override
public void onResponse(JSONObject response){
    numberOfReq--;
}

在另一边,我正在显示一个图像,使用淡入淡出动画 2 秒,然后我完成 Activity 并转到下一个 Activity 。

但我想在完成 Activity 之前等待所有服务器响应。所以我这样写这部分:

@Override
public void onAnimationEnd(Animation anim){
    while(numberOfReq == 0){
        numberOfReq = -1;
        startActivity(intent);
        finish();
        break;
    }
}

如果服务器在 2 秒之前发送响应,则一切正常。

但是如果在 2 秒后收到响应,则 Activity 不会完成。

最佳答案

也许我没有理解这个问题,因为答案似乎非常简单。只需在 Activity “准备好完成”时设置一个标志,然后也在 onResponse() 中检查此条件。

onAnimationEnd() 或最后一个 onResponse() 将首先运行,第二个应该启动第二个 Activity 。例如:

private boolean mReadyToProceed;

@Override
public void onAnimationEnd(Animation anim)
{
    if (numberOfReq == 0)
        startOtherActivityAndFinish();
    else
       mReadyToProceed = true;
}

@Override
public void onResponse(JSONObject response)
{
    numberOfReq--;
    if (mReadyToProceed && numberOfReq == 0)
        startOtherActivityAndFinish();
}

(注意:确保递减和比较不受其他请求线程完成的影响,可能使用锁或使用 AtomicInteger)。

关于android - 从服务器返回响应时完成 Activity ,但等待动画结束,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24476868/

相关文章:

java - 如何向 LibGdx 项目添加平台?

android - 为一行中的按钮自定义 arrayadapter 和 onclicklistener

android - android :required ="false" mean WRT to uses-permission?是什么意思

android - 更改 Activity 堆栈行为

android - 将一个项目从 fragment 适配器动画化到它的父 Activity

java - 如何在 Android 的 AlertDialog 中创建动画?

android - 在 Appetize.io 上应用程序不会将分析事件发送到 Firebase debugView

java - 将多个文本添加到 TextView

android - 三个 Fragments,第二个 Fragments 的接口(interface)需要在 Main 和 Second Activity 上实现

android - 垂直旋转 ImageView