Android 在活动之间传递id或整个对象?

Android 在活动之间传递id或整个对象?,android,android-fragments,Android,Android Fragments,我有一个包含ListFragment的活动。它是从restful Web服务填充的。当我单击列表中的某个项目时,我会将该项目的id发送回我的活动。并使用意图将其传递到第二个细节活动,并再次从Web服务请求id对象 我正在考虑是否应该将对象(而不仅仅是它的id)发送到详细活动?这将为我节省一个http请求,并使事情变得不那么复杂 然而,这也意味着我需要拥有整个物体,而在未来中,情况可能并非如此。。。该怎么办?在设计Android设备使用的web服务时,我总是尝试采用列表项目的方法,只返回项目id,

我有一个包含ListFragment的活动。它是从restful Web服务填充的。当我单击列表中的某个项目时,我会将该项目的id发送回我的活动。并使用意图将其传递到第二个细节活动,并再次从Web服务请求id对象

我正在考虑是否应该将对象(而不仅仅是它的id)发送到详细活动?这将为我节省一个http请求,并使事情变得不那么复杂


然而,这也意味着我需要拥有整个物体,而在未来中,情况可能并非如此。。。该怎么办?

在设计Android设备使用的web服务时,我总是尝试采用列表项目的方法,只返回项目id,然后提供单独的调用以获取详细信息。这允许您只惰性地加载用户感兴趣的数据(如果他只对50个项目中的一个感兴趣,为什么您要同时获取所有项目?)


此外,请记住,
捆绑包的数据大小有限制,这意味着使用意图的数据传输应该受到限制。很酷的一点是,如果超出了大小,捆绑包将一起忽略,并且不会显示任何有意义的错误。

仅传递ID,原因如下:

  • 使用Parcable时,传递对象速度慢或复杂
  • 当直接传递对象时,您拥有高度耦合的服务(活动),这是一种不好的做法,处理活动时应将其视为在自己的流程中(在某些情况下实际发生,例如从另一个应用程序调用活动)
  • 您的对象可能已经过期(例如,用户浏览列表几分钟,然后打开一个项目)
通过良好的后端设计,您应该可以缓解额外http请求的问题,这意味着您应该实现http缓存功能(例如,缓存控制头等)。这将为您提供一个优势,即您始终拥有来自服务器的最新数据,但只有在需要时才有。这应该是透明的,这样就不会使您的逻辑复杂化(例如,检查Volley),如果您不能使用http缓存头和行为,也可以在http客户端前面使用本地缓存