我正在使用Retrofit2和DBFlow。将数据保存到数据库时出现问题。当我同时调用两次线程时,某些数据是重复的。问题是我的列表,因为此变量是最终变量。我必须设置final,因为我需要在线程中使用此List。

然后,有一种方法可以将最终版本删除到我的列表中并替换为某些内容?

改造onResponse()

public void onResponse(Call<AdminPictures> call, Response<AdminPictures> response) {
        AdminPictures apResponse = response.body();

        // Here is my list
        final List<PictureInfos> pictureInfos = apResponse.getPicturesList();

        new Thread(new Runnable() {
            @Override
                public void run() {
                    try {
                        // The List is used here
                        for (PictureInfos infos : pictureInfos) {
                           if(!infos.exists()){
                              infos.save();
                           }
                        }
                    } catch (Exception e) {
                        e.printStackTrace();
                    }
                }
            }).start();

最佳答案

将列表的声明移到类的顶部,并创建一个类变量...

List<PictureInfos> pictureInfos....

07-26 09:41