我有兴趣在我的应用程序的初始屏幕上从服务器获取3个JSON,因此用户不会坐着看到加载微调器。
目前,我这样做:
MainActivity.raffle_controller.fetch_current_raffles(this);
startActivity(new Intent(this, MainActivity.class));
finish();
在Controller中,我从收到的JSON成功填充了一个ArrayList。 (使用Volley)
但是请求运行异步,因此我的MainActivity会加载一个空屏幕。
重新加载片段后,将显示控制器中的所有内容。
我很好奇,如果我能以某种方式等待列表填充,然后显示片段。
答案 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