2011-10-16 50 views
0

我的应用程序正在调用getReadableDatabase,但随后出现'启动超时已过期 - 放弃唤醒锁定'。等待数据库创建

根据Android的参考指南,它说不要从你的主线程进行这个调用,因为它可能会很慢。我还没有一个数据库,所以onCreate大概忙于这样做,这就是为什么我得到了时间?

但是,此时我没有其他任何需要执行的操作,因此必须等待数据库在可以继续之前做好准备,那么如何强制它等待getReadableDatabase完成从主线程?

或者是我的错误别的东西(这是它下面):只有约10秒后

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} 

超时情况 - 不知道这是正常的吗?下面

代码:

SQLiteDatabase db = this.dbHelper.getReadableDatabase(); 

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

任何帮助深表感谢。

+0

通常写文件(也是数据库)很慢。奇怪的是,您必须等待20秒才能获得可读的数据库。 –

回答

2

不过,我没有别的我的应用程序在这一点上做的,它必须等待DB做好准备,才可以继续下去,所以我怎么能强迫它等待getReadableDatabase从主线程完成?

你不知道。您在后台线程上完成工作(包括打开/创建数据库)。在您的用户界面中,显示一些信息以指示正在进行的工作(例如,标题栏中的ProgressBar,ProgressDialog,进度指示器)。工作完成后,更新您的用户界面以反映可用数据。

+0

好的,谢谢 - 我会给它一个去... – Nelmo

+0

好吧,创建一个线程,但现在只是得到可怕的'空指针异常'和下面的堆栈跟踪: – Nelmo