gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:49:28 25 4
gpt4 key购买 nike

我有一个简单的 Android 应用程序,它使用一个类的实例,我们称它为 DataManager,以类似 Façade 的方式管理对域类的访问。我最初将它设计为一​​个可以使用静态方法检索的单例,但我最终对我的实现的困惑感到恼火,并重构为我认为更简单、更清晰的想法。

现在的想法是,对于每个打开的文件,都会创建一个 DataManager,它们处理文件 I/O 和域类的修改(例如 Book).当开始一个新的 Activity 时,我将这个实例作为 Serializable extra 传递(我还没有开始使用 Parcelable ,但是当我有了基本的概念工作),然后我从新 Activity 的 onCreate() 方法中的 Intent 获取 DataManager

然而,对象的比较表明从一个 Activity 发送的对象与从第二个 Activity 的 Bundle 检索的对象不同(不同的引用)。阅读 Bundle(在 StackOverflow 等)表明 Bundle 除了按值传递外不能做任何事情。

那么在 Activity 之间传递对象的最干净、最安全的策略是什么?在我看来我可以

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

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

  3. 扩展应用程序以创建一种对 DataManager 的全局引用。 (同样,不热衷于全局概念。)

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

最佳答案

另一种方法是创建服务。第一个 Activity 将启动服务并绑定(bind)到它,当你启动一个新的 Intent 时,取消绑定(bind)第一个 Activity ,当第二个 Activity 开始时,绑定(bind)到服务。

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

关于java - 是否可以通过引用将对象从一个 Activity 传递到下一个 Activity?最佳策略是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7121850/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com