在Splash Screen

时间:2018-01-06 20:19:31

标签: java android json android-volley

我有兴趣在我的应用程序的初始屏幕上从服务器获取3个JSON,因此用户不会坐着看到加载微调器。

目前,我这样做:

    MainActivity.raffle_controller.fetch_current_raffles(this);

    startActivity(new Intent(this, MainActivity.class));
    finish();

在Controller中,我从收到的JSON成功填充了一个ArrayList。 (使用Volley)

但是请求运行异步,因此我的MainActivity会加载一个空屏幕。

重新加载片段后,将显示控制器中的所有内容。

我很好奇,如果我能以某种方式等待列表填充,然后显示片段。

2 个答案:

答案 0 :(得分:1)

我正在回答这个问题只是因为我想提供帮助,而且我没有足够的声誉来发表评论。

如果您正在处理异步任务,您应该习惯使用侦听器。我没有完全理解你的问题,但我想你可以在drop

找到答案

答案 1 :(得分:0)

您可以向 fetch_current_rafles

添加回调

你会有类似的东西:

public void fetch_current_raffles(Activity activity, Runnable callback){

...
@Override
public void onResponse(JSONObject response) {
    mTxtDisplay.setText("Response: " + response.toString());
    callback.run();
}
...
}

在你的飞溅中,你会做:

MainActivity.raffle_controller.fetch_current_raffles(this, 
new Runnable() {
                @Override
                public void run() {
                    startActivity(new Intent(this, MainActivity.class));
                    finish();
                }
            }
);

如果你使用Java8,那就更具表现力了

MainActivity.raffle_controller.fetch_current_raffles(this,
()->{
       startActivity(new Intent(this, MainActivity.class));
       finish(); 
    });

但是如果你想避免这种回调语法,你可以使用一些带有RxJava的库。我强烈建议retrofit。但您也可以使用RxVolley