gpt4 book ai didi

java - Android 对象处理/持久化

转载 作者:太空狗 更新时间:2023-10-29 13:42:48 25 4
gpt4 key购买 nike

我的第一个 Android 应用程序还很深入,我暗暗怀疑自己“做错了”。我的应用程序与 Ruby on Rails 服务器通信,并通过 XML 来回序列化对象。在我知道发生了什么之前,我发现自己在编写自己糟糕的 ORM 时陷入困境,这个问题由于我自高中以来就没有编写过任何 Java 而变得更加复杂。

我的冲突是我希望我的客户端 (android) 应用程序能够通过各种方法(例如 HTTP/XML)序列化到本地数据库,或输出到本地文件系统。我从策略模式开始,但我觉得我的解决方案非常缺乏。

首先,我是否应该在客户端重新实现所有 Rails 模型验证,因为我不知道我是否总是要在另一端使用 Rails?更大的问题是,现在我只能将平面对象表示为键值,因为我的代码无法像真正的 ORM 那样处理嵌套对象。

我确信 Android 开发人员一直在处理这个问题,所以我很想听听其他人是如何处理这些问题的。

最佳答案

我不会将您的 Android 应用程序视为 Ruby 应用程序的扩展,而是 API 的使用者。如果您可以尝试将您的服务器应用程序公开为 JSON(或其他格式,但 JSON 是最轻量级的)并从您的 Android 应用程序使用这些 API,您很可能会遇到更少的问题,因为 JSON 已经是 K/V 格式。

我还没有将 Android 对象写入 SQLite,但我已经将它们作为 Parcelable 对象和 SharedPreferences 写入。这两种策略都足以满足中小型应用程序的需求。对于数据密集型应用程序,显然您必须更进一步使用 SQLite。

这些方法有一些很棒的文章:Managing State .

它归结为以一种可以轻松序列化的方式设计您的对象。这意味着没有循环引用或极其复杂的对象。这应该不是一个很大的问题,尤其是当您的数据已经是 JSON 格式时。您只需要扩展一些类并添加返回 Parcelable 对象表示或字符串表示的函数,这样就可以保存您的对象。

我会避免在 Android 中克隆您的服务器端对象和验证,因为如果您进行小的更改,它需要修改两个源。服务器应该处理所有数据和验证,您应该只是从 Android 请求、缓存和发送数据。

我很想知道将对象写入 SQLite 是否存在任何挑战,但我想这与我上面概述的细节相差无几。希望这在某种程度上有所帮助!

关于java - Android 对象处理/持久化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3794891/

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