等待数据库创建

时间:2011-10-16 16:24:18

标签: android database

我的应用程序正在调用getReadableDatabase,但后来我发现'启动超时已过期 - 放弃唤醒锁'。

根据Android参考指南,它说不要从你的主线程做这个调用,因为它可能会很慢。我还没有数据库,所以onCreate可能正忙着这样做,这就是为什么我会得到这个问题?

但是,此时我的应用程序还没有其他功能,它必须等待数据库准备好才能继续,所以如何强制它等待getReadableDatabase从中完成主线?

或者我的错误是其他的(这是在下面):

10-16 16:00:30.800: INFO/DB Utils(279): In fetchList...
10-16 16:00:39.505: WARN/ActivityManager(58): Launch timeout has expired, giving up wake lock!
10-16 16:00:39.710: WARN/ActivityManager(58): Activity idle timeout for HistoryRecord{450bce18 co.uk.sanetech.wywh/.TripsScreenActivity}
10-16 16:00:45.034: WARN/ActivityManager(58): Activity destroy timeout for HistoryRecord{44f47ce0 co.uk.sanetech.wywh/.WishYouWereHereActivity}

仅在大约10秒后发生超时 - 不确定这是否正常?

以下代码:

SQLiteDatabase db = this.dbHelper.getReadableDatabase();

   resList = db.query(tabName, null, null, null, null, null, ORDER_BY_LATEST);

感谢任何帮助。

1 个答案:

答案 0 :(得分:2)

  

但是,此时我的应用程序还没有其他功能,它必须等待数据库准备好才能继续,所以如何强制它等待getReadableDatabase从中完成主线?

你没有。您在后台线程上完成工作(包括打开/创建数据库)。在您的用户界面中,显示一些内容以表明正在进行的工作(例如,ProgressBarProgressDialog,标题栏中的进度指示器)。工作完成后,请更新您的UI以反映可用数据。