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

时间:2014-11-06 13:16:24

标签: android android-fragments

我有一个包含ListFragment的活动。它来自一个宁静的网络服务。当我点击列表中的某个项目时,我会将该项目的ID发回给我的活动。并使用intent传递到第二个详细活动,并再次通过web从服务请求对象。

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

然而,这也意味着我需要拥有整个物品和未来可能不是这样的情况......该怎么办?

2 个答案:

答案 0 :(得分:1)

只传递id,并且为什么:

  • 使用Parcable时传递对象很慢或很复杂
  • 当直接传递对象时,你有高度耦合的服务(活动),这是不好的做法,处理活动就好像它们在自己的过程中(实际上在某些情况下发生,例如从anohter app调用活动)
  • 您的对象可能已经过时(例如,用户浏览列表几分钟,然后打开一个项目)

你有一个额外的http请求的问题应该通过良好的后端设计来缓解,这意味着你应该实现http缓存功能(例如etagslast-modified缓存控制头等等) 。这将为您提供以下优势:始终从服务器获取最新数据,但仅在需要时提供。这应该是透明的,所以不要使你的逻辑复杂化(例如检查Volley),如果你不能使用http缓存头,并且行为有一个本地缓存工作在你的http客户端前面。

答案 1 :(得分:0)

当设计Adnroid设备要使用的Web服务时,我会尝试按照列表项的方法返回项目ID,然后提供单独的调用以获取详细信息。这允许你懒得只加载用户感兴趣的数据(如果他只对50个项目中的一个感兴趣,为什么你会同时获取所有这些?)

另外,请记住,Bundle的数据大小存在限制,这意味着使用intets的数据传输应该受到限制。很酷的是,如果你不使用大小,那么捆绑包就会被省略,并且不会显示任何有意义的错误。