在Android上重新创建活动时使用DatabaseHelper

时间:2012-04-14 18:49:04

标签: android database android-activity lifecycle

我有一个使用AsyncTask下载并将一些数据保存到数据库的活动。要打开数据库,我们需要将Context param传递给SQLiteOpenHelper的onCreate方法,这意味着数据库在某种程度上需要上下文。

我只是好奇,当设备转动和活动经历破坏和创建周期时会发生什么?可以在activity的构造函数中而不是在activity的onCreate()方法中打开数据库吗?

问题是我使用来自另一个线程的数据库,我想知道在销毁和重新创建活动时究竟会发生什么?

2 个答案:

答案 0 :(得分:1)

一种解决方案是使用ApplicationContext而不是ActivityContext。您只需要一个从Application构造函数请求ApplicationContext的静态方法。

如果您使用某种单例来访问上下文,那么并发性就不会有任何问题。

请参阅此处的示例:http://androidcookbook.com/Recipe.seam?recipeId=1218

另一种方法是使用LoaderManager跟踪打开的数据库连接。

见这里:http://developer.android.com/reference/android/app/LoaderManager.html (还有一个完整的例子)

LoaderManager在适用于Android 1.5的兼容包中提供

迈克尔

答案 1 :(得分:1)

如果您想在后台执行一些数据库操作。你应该使用“服务”。 服务可以在后台执行长时间运行。

这是链接:http://developer.android.com/guide/topics/fundamentals/services.html