1

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

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

问题是我从另一个线程使用数据库,我想知道当活动被破坏和重新创建时会发生什么

4

2 回答 2

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

迈克尔

于 2012-04-14T19:11:29.703 回答
1

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

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

于 2012-04-14T19:15:33.163 回答