android - 永久修改启动 Activity 的 Intent

标签 android android-intent

我想发送一个 Intent 来启动一个 Activity。我希望能够修改该 Intent。然后,当 Activity 被销毁并重新创建时,我希望这些修改在我调用 getIntent() 时仍然存在。

目前,只要 Activity 没有被销毁,修改 Intent 就可以正常工作。如果有,则在重新创建 Activity 时,它将获得启动它的原始 Intent,而不是第一次启动时收到的可能已修改的副本。

最佳答案

Modifying the Intent to remove my extra data works fine as long as the main Activity is still around, but if it's destroyed/recreated, the extra data is back.

那是因为您修改的是 Intent 的本地副本,而不是操作系统进程中维护的主副本,任务列表就保存在那里。

如果此数据确实是 Activity 的实例状态,则应通过 onSaveInstanceState() 将其原样保存,您将通过 onRestoreInstanceState() 取回该数据>。您图书馆的用户需要将这些事件转发给您。

如果您不希望将其视为实例状态,而是进程状态,请将数据存储在单例中。

如果数据应该在进程的生命周期之外存在,请将其写入磁盘的某个地方。

I could save the data in the host app's broadcast receiver, and then use and delete it in my code

如果通过“将数据保存在主机应用程序的广播接收器中”,那是没有意义的。 list 注册的接收者只存在一次广播,然后就结束了。

关于android - 永久修改启动 Activity 的 Intent,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20447643/

相关文章:

java - HTTPUrlConnection 检查服务器是否支持恢复

android - 选择列表首选项时执行操作

安卓打开邮件客户端

java - 在 Android 上切换类别时遇到问题

android - 如何将 ArrayList<CustomeObject> 从一个 Activity 传递到另一个 Activity ?

android - 为什么我的 Android ListView 选择了多个项目?

java - 尝试声明 BottomNavigationView

android - 浏览器 Intent 并返回正确的 Activity (关闭打开的选项卡)

当从另一个类作为主要 Activity 调用它时,Android Alertdialog 崩溃并出现 "Unable to add window"异常

android - 从广播接收器启动 Activity