java - 如果改造多次调用返回您需要的内容,如何仅通知用户一次?

标签 java android retrofit2

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/

相关文章:

java - 为什么我不能初始化这个 List<List<String>>?

android - 将 ConstraintLayout 放置在 NestedScrollView 中时如何使用整个空间?

android - 如何在按钮内的图标和文本之间添加分隔符?

android - @PUT 请求在改造 2 中不起作用

java - 如果在指定时间后没有发出任何项目,则超时

java - 表名是什么?

java - Maven 插件何时可以访问项目类?

android - `$cookies.put()` 需要 30 秒才能在 Android 上将 cookie 保存到磁盘上

java - GSON 应为 BEGIN_ARRAY 但在第 1 行错误为 STRING

java - String[] args 值到单个字符串