我正在尝试推送屏幕可能主要是UiApplication(MyApp)基于是否创建了数据库,如果它创建的比它是emapty还是它有一些数据.. 但是当我运行这个代码时,我的balckberry应用程序jsts挂起..
感谢任何帮助:)
我已经检查过虚拟SD卡是否在模拟器中,我甚至有代码在运行时检查SDCard是否可用。
使用Eclipse Helios的JDE版本6.0
插入BlackBerry Simulator:9800
Os:Windows 7 32位终极版
下面是我在我的应用中使用的代码
public MyApp()
{
try {
MyAppURI = URI.create("file:///SDCard/BlackBerry/Database/"
+ "MyApp.db");
this.setMyURI(MyAppURI);
boolean flag = false;
flag = DatabaseFactory.exists(getMyURI());
if ( flag == false){
db = DatabaseFactory.create(getMyURI());
db.close();
new DatabaseSchema(); // this will simpaly create setting table in databse MyApp.db i am closing the database there
pushScreen(new Settings());
}else{
db = DatabaseFactory.open(getMyURI());
Statement st = db.createStatement("select count(*) from Setting");
Cursor cursor = st.getCursor();
if (cursor.isEmpty() == true){
pushScreen(new Settings());
}else{
pushScreen(new Reports());
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
答案 0 :(得分:2)
理想情况下,您应该在自己的Thread中运行这些数据库操作,因为它们是阻塞操作。我发现有用的一件事是,如果他们没有正确显示,我将pushScreen()
放在invokeLater()
调用中,当我从构造函数中推出它们时。这允许系统在显示Screen
之前完成需要完成的任何事情,然后它就可以推送。