在活动之间共享DBAdapter

在活动之间共享DBAdapter

问题描述:

好的,在我的应用程序中,我有一个DBAdapter类,它的工作很好。在主要活动中,我有一个变量this.dbAdapter。我想与其他Activites共享这个变量,所以我不必在每个Activity中创建一个新的DBAdapter。在活动之间共享DBAdapter

这样做的最好方法是?我应该做些什么像intent.putExtra("DbAdapter", this.dbAdapter);?或者还有另外一种方法可以解决这个问题?

谢谢!

+0

无法回答你的问题,但我可以告诉你意图的演员只支持几种不同的类型,我不认为DBAdapter就是其中之一。另外你最终只会传递静态而不是参考。 – stealthcopter 2010-09-07 15:40:58

+1

如果在onResume中调用open()并在onPause中调用close(),则不必担心在每个Activity中创建新的DbAdapter对象。另外,我不是专家,但我想你会遇到使用你的方法的上下文问题。 – 2010-09-07 15:43:13

+0

这是你的DBAdapter吗?它是CursorAdapter的子类吗?它只是你的自定义类来简化与DB的工作?如果没有这类信息,很难回答你的问题 – 2010-09-07 16:22:05

与Android最佳集成的解决方案是create a Content Provider,并让每个活动都使用适配器将查询结果与您的小部件绑定。但是,只需在每个活动中创建一个新的DBAdapter即可,并确保在活动暂停时关闭所有资源。如果你需要在你的适配器中保持状态,你可能做错了什么。

+0

通过本页面的回复,我将在每个Activity上创建一个新的DBAdapter。 – Chiggins 2010-09-08 14:28:27

+0

这绝对不是“最好的解决方案”......你不必创建一个“ContentProvider”,只是简单地在多个活动*享适配器...... – 2012-08-06 03:08:16

+0

经过3年多的Android开发之后,我发现这对我来说是最好的解决方案。它与Android操作系统紧密相连,为您免费提供许多精彩的东西。为了使它更易于使用,我已经将它抽象出来,所以它比编写数据库的东西更容易,因为你不需要编写任何SQL:https://github.com/mitmel/SimpleContentProvider(它有点像ORM ,但不会创建大量的对象)。 – 2012-08-06 13:25:49

我想与其他Activites共享这个变量,所以我不必在每个> Activity中创建一个新的DBAdapter。

请不要这样做。适配器与其活动和基础数据紧密结合。你所要做的就是让你的应用程序崩溃。

+0

那么当我想要的时候,什么是一个很好的选择? – Chiggins 2010-09-07 15:42:06

+0

你确定它是某种CursorAdapter子类吗?或者我只是不明白什么? – 2010-09-07 22:09:23

+0

@Chiggins:只需创建新的'DBAdapter'。 – CommonsWare 2010-09-07 22:34:02