目前,我已经在我的主活动中嵌入了一个TouchDB实例,现在已经达到了需要单独的片段访问它的地步,仅仅将数据从主活动传递到其他活动是不够的。有没有推荐的方法在活动/片段之间共享相同的数据库实例?例如,在与我的应用程序类似的下图中,片段b需要访问数据库,但在移动设备上,它将附加到活动B和平板电脑活动A(在我的例子中是主要活动)。

从我的主活动中提取db实现并将其放入一个单例类中是推荐的方式吗?或者实例化并销毁每个活动/片段中的数据库?如果后者是更好的方法,我的理解是,除了主要活动之外,最好将db实现放在片段中,而不是它们相关的活动中。
发布于 2013-05-09 04:23:36
你一定要从你的视图代码中提取出你的DB代码。。在此之后,根据应用程序的需要,您有很多选择。
根据您的需求可能有用的模式:
关于单例的附注,这是您提到的一种可能的解决方案。单例对象和全局静态对象之间几乎没有区别。它们有相似的弱点-它们引入了代码依赖性,并且使用它们的代码可能很难为其编写自动化测试。主要区别在于单例可以控制第一次创建底层对象的时间-这可能对应用程序的影响最小。(如果您的db代码需要10秒才能加载,并且您希望在加载过程中显示闪屏,那么Singleton可能会很有帮助。)
https://stackoverflow.com/questions/16120336
复制相似问题