通过引用将对象从一个Activity传递到下一个Activity是否可能,以及最佳策略是什么?

Spi*_*ner 5 java android reference android-activity

我有一个简单的Android应用程序,它使用类的实例,让我们调用它DataManager,以类似Façade的方式管理对域类的访问.我最初设计它是一个单独的,可以使用静态方法检索,但我最终对我的实现的混乱感到恼火,并重构为我认为是一个更简单和更清洁的想法.

现在的想法是,对于每个打开的文件,DataManager创建一个文件,它们处理文件I/O和域类的修改(例如Book).当开始一个新的活动,我通过这个实例作为一个Serializable额外的(我还没有到使用Parcelable还,但预计我会当我有基本的概念工作),然后我抓住了DataManagerIntentonCreate()的方法新活动.

然而,对象的比较表明从一个活动发送的对象与从Bundle第二个活动中检索的对象不同(不同的引用).阅读Bundle(在StackOverflow等上)表明Bundles除了传值之外不能做任何其他事情.

那么什么可能是在活动之间传递对象最干净,最安全的策略?我能看到它

  1. 忘记通过引用传递并与每个Activity拥有自己的DataManager对象一起生活.DataManager每次关闭活动时都会传回新的活动,以便底层活动可以使用它.(我认为这是一个简单的解决方案.)

  2. 回到使用单例DataManager并使用静态方法从每个单独获取它Activity.(不再热衷于使用单身人士.)

  3. 扩展应用程序以创建一种全局引用DataManager.(再次,不热衷于全局变量的想法.)

这是一个公平的总结吗?我可以使用其他一些健康的策略吗?

Ljd*_*son 4

另一种方法是创建服务。第一个活动将启动服务并绑定到它,当您启动新意图时,取消绑定第一个活动,当第二个活动启动时,绑定到服务。

这样您就不必停止服务或担心在活动之间传递数据。