如何通过 Bundle 传递对象

121

我需要通过一个bundle传递对负责大部分处理的类的引用。

问题在于它与意图或上下文无关,并且具有大量非原始对象。如何将类打包成parcelable/serializable并将其传递给startActivityForResult


2
我需要通过一个bundle传递到执行大部分处理的类的引用 -- 为什么? - CommonsWare
1
我有一个对象(DataManager),它处理一个服务器并运行一些GUI的后端。每当建立新连接时,我希望用户能够启动一个新活动,列出ListView中所有活动连接,并让用户选择一个。然后,生成的数据将绑定到一个新的GUI上。这实际上只是一个后端皮肤选择器。 - ahodder
3
如果您需要在多个活动中处理同一对象实例,您可能需要考虑使用单例模式。这里有一个很好的教程链接 - sotrh
11个回答

0

这是对我自己问题的一个非常迟到的回答,但它一直受到关注,所以我觉得我必须解决它。大多数答案都是正确的,并且完美地处理了工作。然而,它取决于应用程序的需求。本答案将用于描述解决此问题的两种解决方案。

应用程序

第一种是应用程序,因为它是在这里被谈论最多的答案。该应用程序是一个很好的对象,可以放置需要引用上下文的实体。`ServerSocket`无疑需要上下文(用于文件I / O或简单的`ListAdapter`更新)。我个人更喜欢这条路线。我喜欢应用程序,它们有助于检索上下文(因为它们可以被静态地制作,不太可能导致内存泄漏),并且具有简单的生命周期。

服务

服务是第二个。对于我的问题来说,服务实际上是更好的选择,因为这就是服务的设计目的:
服务是一种应用程序组件,可以在后台执行长时间运行的操作,并且不提供用户界面。
服务的生命周期更加明确定义,更易于控制。此外,如果需要,服务可以在应用程序外部运行(即在启动时)。这对于某些应用程序可能是必要的,或者只是一个很棒的功能。

这并不是它们的完整描述,但我留下了文档链接,供那些想要进一步了解的人使用。总体而言,服务对于我需要的实例——运行到我的SPP设备的ServerSocket——是更好的选择。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接