[英]HTTP Call Returning Stale Data
我正在構建一個應用程序,該應用程序以固定的時間間隔從網站檢索數據,並且正在檢索陳舊的數據。 具體來說,我是從NFL游戲中獲取分數,但是只要分數發生變化,我的應用程序就會在返回舊分數和新分數之間交替進行。 最終,它將穩定並僅返回新分數。
如何防止我的應用程序返回陳舊數據?
public class MainActivity extends Activity {
private String webSourceCode;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
new MyAsyncTask().execute();
}
private class MyAsyncTask extends AsyncTask<Void, Void, List<Integer>> {
protected List<Integer> doInBackground(Void... params) {
StringBuilder sb = new StringBuilder();
try {
URL nfl = new URL("http://www.cbssports.com/nfl/scoreboard");
BufferedReader in = new BufferedReader(
new InputStreamReader(
nfl.openStream()));
String inputLine;
while ((inputLine = in.readLine()) != null) {
sb.append(inputLine);
}
in.close();
}
catch (MalformedURLException e) {
e.printStackTrace();
}
catch (IOException e) {
e.printStackTrace();
}
webSourceCode = sb.toString();
return parseScores(webSourceCode);
}
protected void onPostExecute(List<Integer> listScores) {
updateViews(listScores);
//recursion
new MyAsyncTask().execute();
}
}
}
GET調用可以由服務器或中介緩存。 您可以傳遞動態查詢參數,以確保中介/服務器不會發回緩存的響應。 這樣的事情會起作用:
URL nfl = new URL("http://www.cbssports.com/nfl/scoreboard?nocache="+new Date().getTime());
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.