缓存相关问题 codenameone

3
我对缓存有一些问题...
1) 我使用URLImage如下:
URLImage.createToStorage(profileImg, photoUrl + "__c", photoUrl, URLImage.RESIZE_SCALE_TO_FILL)

如果在服务器上编辑图像(用新的替换旧的),它会显示旧的图像,而不是更新为新图像。我应该怎么做才能重新更新缓存的图像。
2)我们正在开发一款新闻应用程序。这里的新闻每天都会更新。最近的十条新闻以如下方式保存在存储器中:
    //write the storage object
     do {
          Storage.getInstance().writeObject("newsListingStorage", fetchresponses);
        } while (fetchLastId < 10);

    //read the storage
    public Vector newsListOfflineStorage() {
        Vector newsListingRead = (Vector)Storage.getInstance().readObject("newsListingStorage");
        return fetchresponses;
       }

我担心如果用户每天存储10个项目,一个月或一年后将存储更多项目。缓存项将继续增加... 我如何替换每次存储的缓存以保留最新的10个项目,以便每次运行应用程序时只有10个最近的缓存项。
1个回答

1
我不知道缓存到期是否已经在codenameone中引入,但我的处理方法是使用来自您数据库的唯一ID缓存图像。
URLImage.createToStorage(profileImg, "largeImage_" + newsUniqueId + ".jpg", photoUrl, URLImage.RESIZE_SCALE_TO_FILL);

假设您之前存储了10条新闻,它们的ID无关紧要,而在您的数据库中有100条新闻,您只需要从91到100的独特ID的头条新闻。循环从0到90,并删除存储中存在的这些图像。
private void deleteImageFromStorage(String imageName) {
    FileSystemStorage fss = FileSystemStorage.getInstance();
    fss.deleteRetry(fss.getAppHomePath() + imageName, 2);
}

for (int i = 0; i < myTop10NewsLowestId; i++) {
    deleteImageFromStorage("largeImage_" + i + ".jpg");
}

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接