在不启动接收活动的情况下将数据传递给活动 (Android)

Posted

技术标签:

【中文标题】在不启动接收活动的情况下将数据传递给活动 (Android)【英文标题】:Passing Data to an Activity without Starting the Receiving Activity (Android) 【发布时间】:2018-07-21 12:10:51 【问题描述】:

我正在制作一个联系人应用程序,它会向用户显示以下按钮,“创建新联系人”、“编辑联系人”、“删除联系人”、“显示联系人”和“完成”。

点击编辑、删除或显示时,必须输入/显示一个联系人列表活动。 在“创建新联系人”活动中创建联系人时,我想将联系人对象(它实现 Parcelable)发送到联系人列表活动中的 ArrayList 而无需启动它,一旦添加了联系人,我想返回 MainActivity。

我不确定如何处理,因为使用 Intents 会导致直接进入活动,我也不确定如何保存联系人列表活动中的 ArrayList。

有什么建议吗?我不需要确切的代码,但我不确定完成这项任务的方向。

【问题讨论】:

我不确定您真正想要实现什么。 intent.putExtra(STR, STR) 可以帮助吗?这样您就可以在不启动 Activity 的情况下将数据保存到 Intent 中。 应该是 -intent.putExtra(STR KEY, Contact Object)。 【参考方案1】:

在我看来,数据模型应该存在于应用程序的上下文中,而不是活动的上下文中。然后可以从所有活动中访问数据。现在,您需要通过意图传递的唯一对象是数据集的 id。

这个一般原则还可以让您执行想要做的事情,开始一个新的活动,进行一些数据操作并将新的意图发送到下一个活动,而不显示前一个活动。

【讨论】:

【参考方案2】:

有一个逻辑问题:如果没有Activity 实例,为什么要向它(甚至不存在)发送数据?

或者,如果您希望数据存在于整个用户生命周期中,则需要将编辑后的数据(添加、编辑、删除)保存在本地存储或数据库等位置。并在启动演示者活动(接收数据并将其呈现给用户)时从持久层获取数据(然后将其解析为特定对象)。

【讨论】:

以上是关于在不启动接收活动的情况下将数据传递给活动 (Android)的主要内容,如果未能解决你的问题,请参考以下文章

当新的应用实例启动时,如何将数据传递给已经运行的应用实例

将数据传递给 Service 的 onDestroy()

如何在不使用服务的情况下将子组件之间的反应式表单数据传递给父组件

在不需要 URL 参数的情况下将 props 传递给路由

如何在通过广播接收器将 JobIntentService 之间的数据传递给活动时防止 TransactionTooLarge 异常

如何在不打开的情况下将数据发送到另一个活动