Retrofit 每 X 秒调用一次并返回对象列表。 如果列表中的任何对象有我需要的内容,它应该通知用户。
我无法解决的问题是改造每 X 秒进行一次新调用并返回新的对象列表。但对象或对象之一可能是相同的,如果是这样,则无需再次通知用户。如何做到这一点?
@Override
public void onResponse(Call<LiveScore> call, Response<LiveScore> response) {
if (!response.isSuccessful()) {
Toast.makeText(MainService.this, response.code(), Toast.LENGTH_SHORT).show();
}
liveScore = response.body();
List<Result>results = response.body().getResult();
for (int i = 0; i < results.size(); i++) {
//here i check all object for a match
int homeScore = Integer.parseInt(results.get(i).getScores().getFirstQuarter().get(0).getScoreHome());
int awayScore = Integer.parseInt(results.get(i).getScores().getFirstQuarter().get(0).getScoreAway());
if (homeScore >= 5 && awayScore >= 5) {
//if true and
// if current position of object previously has
//not notification, notify
}
}
}
最佳答案
一个快速且可能幼稚的方法是这样的:
private final Set<Result> uniqueResults = new HashSet<>();
@Override
public void onResponse(Call<LiveScore> call, Response<LiveScore> response) {
if (!response.isSuccessful()) {
Toast.makeText(MainService.this, String.valueOf(response.code()), Toast.LENGTH_SHORT).show();
return;
}
liveScore = response.body();
for(Result r : response.body().getResult()) {
if(uniqueResults.add(r)) {
// notify user
}
}
});
您还需要在 Result
类中重写 equals()
和 hashcode()
。
关于java - 如果改造多次调用返回您需要的内容,如何仅通知用户一次?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54227160/