Android:将来安排数据库调用

时间:2014-09-14 06:42:31

标签: java android sqlite android-context

我想安排一些将来要执行的代码。我将来要做的是,未来的进程应该调用web服务并做一些事情,之后它应该调用我拥有的本地数据库(SQLite)并对其进行一些更新。

我打算将Handler用于此目的。其中我将Runnable对象传递给它,并且在runnable内部我将调用AsyncTask来调用webservice,在onPostExecute上我将调用我的本地数据库并进行更新。

但问题是,当我调用db时,它需要一个上下文来打开它自己。现在我查了一下是否可以将null传递给它,但后来它说它将创建一个内存数据库,而不是给我已经创建的数据库。

现在,我可以从我创建runnable实例的地方传递上下文信息,但是如果我保持我的'context'对象存活,会发生什么。该上下文不会在数据库中的任何地方使用。

通过这种方式最好的方法是什么?

由于

2 个答案:

答案 0 :(得分:2)

使用IntentService,执行阻止请求,以便不会终止服务,然后在onHandleIntent中写入数据库。

答案 1 :(得分:0)

我认为这应该有用如果你使用你所说的处理程序方法。如果您保留对上下文的引用,我认为您不会遇到任何问题(除了阻止垃圾收集器收集上下文)。为了安全起见,我会使用应用程序上下文来创建和检索数据库,因为该上下文不会收集垃圾,直到Android操作系统杀死您的应用程序进程,这会在用户关闭应用程序后的某个时间发生。