我在我的一个应用程序中实现了 Volley 库!我有一个数据加载按钮,当我点击它时,它会检查时间戳,然后相应地下载数据,如果有新数据或通知用户他已经有最新的可用数据。
虽然我还想在应用程序启动时实现连接更改的接收器,以便下载数据或更新它们。一切都很好,直到它到达时间戳值的 StringRequest。
在这一点上,发生了一件非常奇怪的事情。尽管请求以正确的时间戳返回,但代码首先执行时间戳的 get 方法,然后执行使时间戳变量为空的 set 方法。仅当广播接收器触发数据检查时才会发生这种情况。
当它被手动触发时,一切都很好......
检查时间戳方法
private void checkTimestamp(){
mTimestampRequest = new StringRequest(DatabaseSharer.TIMESTAMP_URL,
new Response.Listener<String>() {
@Override
public void onResponse(String response) {
Log.d(Menu.class.getSimpleName(), "Responsed back -- " + response);
setmTimeStamp(response);
}
},new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
}
}
);
mRequestQueue.add(mTimestampRequest);
}
方法调用顺序
checkTimestamp();
Log.d(Menu.class.getSimpleName(),"dataStaff-1st else entered");
String lastTimestamp = shared.getString("time", "none");
final String temp = getmTimeStamp();
Log.d(Menu.class.getSimpleName(), "temp= " + temp + " -- lasttimestamp = " + lastTimestamp);
Receiver Logcat(看到get为null,在set之前执行)
Logcat手动触发时(get之前也执行过,但响应正确)
我没有想法,所以如果有人可以帮助我,我将不胜感激!!