【问题标题】:Pass serialzable object or query database again?再次传递可序列化对象或查询数据库?
【发布时间】:2014-09-22 13:20:31
【问题描述】:

我有一个在 MainActivity 上实例化的 FoodObject。我想展示 EditActivity,其中 FoodObject 填充 EditActivity 上的相应字段并准备好进行编辑。

我看到两个选项: (1) 将 FoodObject 的 _id 传递给 EditActivity 并让它查询 db 以使用 Loader 等获取 FoodObject。 - 要么 - (2) 使用intent.putExtra() 将EditActivity 直接作为可序列化的FoodObject 传递。

我对 Android/Java 很陌生(虽然多年 obj-c),所以我不确定什么是最佳实践。

感谢任何反馈。

【问题讨论】:

    标签: java android android-intent serializable


    【解决方案1】:

    最佳做法是传入对象的 ID,然后在 EditActivity 中重新查询它。您还应该尽可能远离Serializable,因为它的性能不是很好(请参阅http://www.developerphil.com/parcelable-vs-serializable/)。

    【讨论】:

    • 谢谢詹姆斯!这就是我的假设。我一定会检查链接。
    • @James McCracken 我对您发布的那篇文章持怀疑态度。在 Android 中,您将在将对象从一个 Activity 传递到另一个 Activity 时使用 Serialisable。文章指出,在 Desire Z 上捆绑和解绑可序列化的过程将花费 4 毫秒。当在该设备上从一个 Activity 转换到另一个 Activity 需要 500 毫秒(只是猜测)时,这有什么关系?另外,是什么让您认为查询数据库会比规定的 4 毫秒更快?
    • 绑定和解绑将与您正在运行的任何其他逻辑一起发生在 UI 线程上。这比 17 毫秒的阈值更接近 4 毫秒,以降低 60 fps 的 UI 并给最终用户带来断断续续的体验。实际上,查询数据库可能需要更长的时间,但该查询可以在 UI 线程之外完成。
    猜你喜欢
    • 2021-03-08
    • 2013-04-27
    • 1970-01-01
    • 2013-10-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-11
    • 1970-01-01
    相关资源
    最近更新 更多