维护PendingIntents列表,坚持过去拥有对象的生命周期

时间:2017-01-25 15:46:52

标签: android android-intent android-pendingintent

我有一个数据对象,偶尔会使用定期警报从网络上的数据源刷新。

此数据对象跟踪想要在获取新数据时收到通知的对象。我目前使用两种方法来注册监听器 - 如果他们希望仅在app处于前台时刷新,他们可以注册为回调,或者如果需要通知观察对象,他们可以注册PendingIntent即使应用程序未处于活动状态。

我的问题是,如果我的数据对象从内存中删除,那么它的PendingIntents列表也会被删除。我想我可以想出一个复杂的方法来保持列表及其中所有字段的共享偏好或其他东西,但我认为必须有一个更好的方法。

对于所有“我的”PendingIntents,有没有办法让我知道系统,我知道它拥有自己的PendingIntents列表?

请注意,我在创建对象时或在任何其他时间无法重新创建PendingIntents - 这些是由侦听器创建的,并且无法推断出它们设置的字段或值。

2 个答案:

答案 0 :(得分:0)

看看这些Storage Options

以前我不得不使用挂起的意图来安排警报。重启设备后,操作系统会删除所有警报,因此我必须在操作系统完成启动后重新创建它们。

要确定两个PendingIntents是否匹配,以下内容必须相等:

  • 创建PendingIntent时使用的requestCode参数
  • 意图行动
  • 意图类别
  • 意图数据
  • 意图MIMETYPE
  • 意图包
  • 意图组件

不考虑额外内容。

所以我将这些信息存储到RelationalDatabase(在我的情况下是Realm)中,并且可以在以后“重新创建”待处理的意图。

此外,请查看this answer。它与你的非常相似。

答案 1 :(得分:0)

听起来很复杂,可能不可能(使用PendingIntent)。

为什么不在广播Intent中广播对象的更改。这样你就不必跟踪任何听众。任何想要侦听对象更改的组件都可以为相应的广播Intent注册一个侦听器。