Android 安卓,操纵以前的活动

Android 安卓,操纵以前的活动,android,android-intent,Android,Android Intent,我有两个活动-“A”包含一个会话列表的片段,“B”代表一个会话(显示它的消息),在B中我还可以发送一条新消息。 我希望每次在B中发送消息时都能更新A的对话列表,所以当我单击android的后退按钮时,活动的视图就会更新 对我来说,问题的核心是,当我点击安卓的后退按钮时,我并没有通过一个意图启动,所以我不知道如何获得这种效果 谢谢你的帮助 当A在后台时,不能保证A的实例甚至存在于内存中。如何从B操纵A的问题的答案是“不要” 一些正确的方法: 如果您的模型(对话列表)是Parcelable或Ser

我有两个活动-“A”包含一个会话列表的片段,“B”代表一个会话(显示它的消息),在B中我还可以发送一条新消息。 我希望每次在B中发送消息时都能更新A的对话列表,所以当我单击android的后退按钮时,活动的视图就会更新

对我来说,问题的核心是,当我点击安卓的后退按钮时,我并没有通过一个意图启动,所以我不知道如何获得这种效果


谢谢你的帮助

当A在后台时,不能保证A的实例甚至存在于内存中。如何从B操纵A的问题的答案是“不要”

一些正确的方法:

  • 如果您的模型(对话列表)是
    Parcelable
    Serializable
    ,您可以通过
    Intent
    在活动之间传递它。如果您为结果启动B,并从返回到A的活动结果的
    ontactivityresult
    Intent
    中检索它,则可以将它从B传回A
  • 使模型持久化,如在数据库或
    SharedReferences
    文件中
  • 将模型放入绑定的
    服务中
    。这比让每个活动从持久性存储中加载要快,但您可能仍然需要使其持久化,以便在
    服务关闭时不会丢失它

我不是通过意图启动一个项目。如果某项活动是一项活动,那么您必须有目的地开始它。它是应用程序的主要活动吗?在这种情况下,活动A将在显示活动B时暂停。因为在任何给定的时间只能显示一个活动,所以在它们之间进行通信是没有意义的。您应该在活动B和活动A的
onResume()
中更新数据源,刷新/重新加载数据。最佳解决方案是使用content providersOption 1-您可以维护一个小型SQlite数据库,并不断更新和读取活动a和B之间的对话。即使应用程序停止,当您返回时,所有这些内容都将保留在那里。选项2-您可以传递可包裹对象。您可能正在使用意图启动活动B。因此,从startActivityForResult开始。活动B完成后,将可包裹数据返回给活动A。