【问题标题】:Best way Persistence objects Activity with 3 fragment from other Activity最佳方式持久性对象 Activity 与来自其他 Activity 的 3 个片段
【发布时间】:2016-10-11 17:02:44
【问题描述】:

我需要关于下一次实施的建议。

我有一个应用程序,它有不同的不同部分。每个都有一个目标,或多或少有区别。

其中之一是聊天。这个聊天是一个Activity,它有3个片段,和Whatsapp一样,但简单得多。

当我开始活动时,我会启动一个连接到 XMPP 服务器、用户获取、消息、邀请等的服务。

当我开始与用户聊天时,开始一个新活动。 (这很重要)

当 XMPP 服务接收到东西时,我通过 sendbroadcast 发送片段和更新信息。到目前为止一切顺利,因为活动及其三个片段我都在内存中,我可以去更新它们各自的对象。

我的问题是下一个: 当我打开与用户的聊天时,打开一个新活动,并且无法访问我需要的对象。 (比如用户列表,现在如果我的服务收到好友请求,我不能添加,因为对象没有)

我该怎么办?

据我所知 3 个选项:

1- 通过对对象的意图开始,显然我必须做 parceables。当您关闭聊天活动时,返回更新的对象。

2- 为我创建一个单例对象(正如我所读,记忆丢失的问题很多)

3- 稍后,我将不得不创建一个 SQLite 来保存消息历史记录。我可以使用这个数据库来临时保存这些对象吗?

你有更好的选择吗?不同的推荐?

【问题讨论】:

    标签: android android-activity xmpp persistence


    【解决方案1】:

    选项 2 和 3 都可以用来解决您的问题。 选项 2 更简单,可以作为实施的第一步。 但是,如果您打算在将来使用 SQL,选项 3 似乎是您选择的正确选项。它可以帮助您从实际 UI 中解耦数据存储部分和获取。 至于您关于数据库是否可以保存临时数据的问题,您绝对可以在不再需要它们时清理相关表(例如,每当您启动应用程序并拥有旧数据时)。

    我建议你看一个很好的参考是CursorLoaders

    【讨论】:

    • 非常感谢您的回复。我保持安静一点的事实,因为我认为活动之间的持久对象存在一些不知道的神奇事物。虽然我还是不太喜欢单例,但还是先做个快速部署的测试,然后再传给SQLite。关于 CursorLoader,感谢您提供的信息。不认识他。如果我没有误解的话,我已经读了一点:使用 CursorLoader 我可以从后台的当前活动中更新另一个活动中的列表吗?是这样吗?
    • 当您将 CursorLoader 与 ContentProvider 耦合时,您可以在多个活动(或应用程序的其他部分)之间更新数据。我认为这个答案可以帮助你 - stackoverflow.com/questions/15517920/…
    • 非常感谢。 :) 我还有一些疑问:我知道 A ContentProvider 仅用于与外部应用程序共享信息。这是吗?它从未使用过,但这是我理解的。
    • 您不必将数据暴露给外部应用程序 - 您可以在定义时使用 android:exported="false" (详见developer.android.com/guide/topics/manifest/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多