假设您在应用程序中有多个活动,需要共享数据。对于Android开发人员来说,一种非常常见的模式似乎是拥有某种单例对象(可选地附加到应用程序单例),并使用该对象全局共享数据。这在Java中已经够糟糕的了,但在Scala中看起来非常丑陋。
对于消息传递,如果数据由基元组成,则可以使用 Intents。但是您的主域模型呢?我希望能够传递非常复杂的对象。似乎我可以使用 Parcelable 序列化来做到这一点,但我不确定这有多快(我的对象是数据密集型的),以及它是否适用于 Scala?有人试过这个吗?
另一个想法是使用"HashMap of WeakReference to Objects"策略,其中传递的消息是引用 - 你仍然有全局数据,但访问是受保护的。也许我也可以得到一些意见,不仅来自Android人,也来自一些Scala人。
我解决这个问题的方法是在我的应用程序中包含 Akka 库,并将全局对象转换为在活动之间传递的消息。
它似乎工作正常,但到目前为止,没有多少人在Android上使用Akka,并且很难找到最佳实践。如果人们对此策略有任何意见,请告诉我。