潜在的应用程序将注册到我的服务相关的特殊事件,并将在适当的时间通知.
我正在考虑像Google使用Google Play服务那样实现这一点:
感谢Android进程间通信,其他应用程序可以绑定到我的应用程序服务,并通过它 – 传递给我的应用程序PendingIntent“回调”,我可以在适当的时间执行它们.
现在,我将解决这个问题:
>我的应用程序进程当前正在运行(在后台)并持有对其他应用程序提供的PendingIntent的引用.
>现在,由于某种原因(系统决策/用户明确),我的流程已停止.
>我的过程在某些时候回来了,然后回到“做它的事情……”
在那一点上 – 我失去了之前提供给我的PendingIntent的引用,我在API中没有看到任何方法来检索对它的引用.
我也没有看到任何保存持久性的方法(数据库/ sharedPreferences /文件系统)保存后者的待定意图
我的问题是:
>是否有可能以某种方式持久存储未决意图?
>是否可以“取回”对我之前已经获得的相同待定意图的引用?
>如果没有,是否有任何其他建议来实施我所述的事情?
解决方法
is it possible to store pending intent persistently somehow?
没有.
is it possible to “get back” reference to the same pending intent I already got before?
不是来自操作系统.如果您有其他“bootstrap”通信方法,您可以要求原始应用重新提供PendingIntent.例如,您可以发送一个广播,说明您需要重新注册的应用程序;使用您服务的应用会收听此类广播并为您提供新的PendingIntent.
或者,完全跳过PendingIntent并使用其他内容.例如,应用程序可以导出BroadcastReceiver.如果他们在您当前的计划中注册PendingIntent,他们只会为您提供BroadcastReceiver的ComponentName.该信息(包名和类名)可以保留,然后您可以根据需要向该特定ComponentName发送广播.
请注意,对于涉及持久性的任何策略,您将需要处理客户端应用程序已升级且旧存储的详细信息现在不正确的情况(例如,它们重构了代码,旧的ComponentName现在无效).