gpt4 book ai didi

android - 如何持久保存另一个应用程序提供的PendingIntent

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:02:41 25 4
gpt4 key购买 nike

假设我想实现一个向其他应用程序(如 Google Play 服务......)公开服务的应用程序。

潜在的应用程序会注册到与我的服务相关的特殊事件,并会在正确的时间收到通知。

我想像 Google 对 Google Play 服务所做的那样实现它:

感谢 Android 进程间通信,其他应用程序可以绑定(bind)到我的应用程序 Service,然后 - 传递给我的应用程序 PendingIntent 我可以执行的“回调”在合适的时间给他们。

现在,我将解决问题:

  • 我的应用程序进程当前正在运行(在后台)并持有对其他应用程序提供的 PendingIntent 的引用。

  • 现在,出于某种原因(系统决策/用户明确)我的进程已停止。

  • 我的流程在某个时间点恢复,然后回到“做这件事……”

在那一点上 - 我失去了对之前提供给我的 PendingIntent 的引用,而且我在 API 中看不到任何方法来检索对它的反向引用。

我也没有看到任何方法来持久保存(数据库/sharedPreferences/文件系统)保存未决 Intent 以供后者使用

我的问题是:

  • 是否有可能以某种方式持久存储挂起的 Intent ?

  • 是否可以“取回”对我之前已经获得的相同未决意向的引用?

  • 如果没有,是否有任何其他建议来实现我所描述的事情?

最佳答案

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,他们会简单地为您提供 BroadcastReceiverComponentName。该信息(包名称和类名称)可以保留,然后您可以根据需要向该特定的 ComponentName 发送广播。

请注意,对于任何涉及持久性的策略,您都需要处理客户端应用程序已升级且旧的存储详细信息现在不正确的情况(例如,他们重构了代码,旧的 ComponentName 现在无效)。

关于android - 如何持久保存另一个应用程序提供的PendingIntent,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21079950/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com