首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >按当前日期进行领域可流动查询筛选

按当前日期进行领域可流动查询筛选
EN

Stack Overflow用户
提问于 2021-08-05 16:59:18
回答 1查看 106关注 0票数 0

上下文

我正在开发一个离线的第一个应用程序,我基本上是在开发一个屏幕,它应该显示商店提供的一系列服务--折扣、优惠券,诸如此类的东西--我正试图通过Flowables来获取数据,并且我希望这个应用程序对我们在领域DB上所拥有的内容保持百分之百的诚实。我的意思是,如果数据库中有什么变化,应用程序应该立即刷新UI,这就是为什么我要使用Flowables。

问题

到目前为止,这种方法一直运行得很好,但我偶然发现了这种特殊的情况,在这种情况下,事情有些棘手。我需要显示这样的商店报价清单:

代码语言:javascript
运行
复制
private val offersFlowable: Flowable<RealmResults<RealmOffer>>
        get() {
            val realm = Realm.getDefaultInstance()
            return realm.where(RealmOffer::class.java)
                .equalTo("userId", CredentialManager.getInstance().getUserId())
                .and()
                .beginGroup()
                    .isNotNull("expiryDate").and().greaterThan("expiryDate", Date())
                .endGroup()
                .findAll()
                .asFlowable()
        }

查询本身工作得很好,我获取尚未过期的用户报价。唯一的问题是,每次刷新数据时,我似乎都需要重新创建这个查询。为什么?因为Date()。我打开呈现这个存储提供列表的Activity,实例化查询并开始侦听更改--到目前为止--但是如果我有一个马上就要过期的商店报价,请等待整整一分钟,然后按一下刷新,过期的优惠就不会消失。同样,由于Date(),因为当前日期是一分钟前实例化的,而且它仍然是那个日期。

如果我从零开始终止应用程序或实例化Activity,那么一切都会按预期的方式工作,因为我再次实例化了查询,从而获得了最新的Date()

我到目前为止尝试过的

  • 没有硬编码Date() arg,在我的ViewModel中有一个currentDate属性--这个流动的生活的地方--我有点希望如果日期arg是对计算的Kotlin属性的引用,那么就可以做到这一点,但是它不起作用。

Date.与

  • 相同,但我将expiryDate字段改为millis,而不是expiryDate

解决方案--

所以,现在唯一起作用的就是每次执行PTR时重新实例化可流动的查询,这样我就传递了最新的Date() arg,查询就像预期的那样工作。

我的问题

是否有任何方法可以修复这个问题,而不必一直重新实例化查询?

谢谢!感谢所有反馈!

EN

回答 1

Stack Overflow用户

发布于 2021-08-17 10:03:18

我希望我已经正确地理解了你的问题,我想提出一个建议,也许会对你有所帮助。当前的工作肯定不是一个好的选择,因为一次又一次地请求数据库。所以在我看来,在这种情况下,

在RecyclerView上呈现数据之前,执行以下操作;

1-获取每个项目的到期日和时间。

2-获取当前日期和时间。

3-将两者进行比较,得出两者的差异。

现在,如果差异是-ve值,它意味着该项过期了,您不必在recyclerView中显示它。当然,这个项目在ArrayList/List中是可用的,但是它不在recyclerView上呈现。

,否则是第二个选项

在添加存储向数据库提供数据时,只需为每个报价注册一个PendingIntent和一个AlarmManager,并将Expriy-time设置为PendingIntent的警报时间。

这样,当要约到期时,它就会发出警报。所以,在这里你可以做魔术,当PendingIntent得到触发器,只需更新您的数据库和回收视图从那里。这样你就可以自动处理每一个报价。

如果有帮助请告诉我。

快乐编码:)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68670734

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档