0

データベースが作成されているかどうかに基づいて、メインの UiApplication (MyApp) に画面をプッシュしようとしています。作成されている場合は、emapty であるか、データがあるかどうかに基づいています..しかし、このコードを実行すると、私の balckberry アプリケーション jsts がハングします..

どんな助けでも大歓迎です:)

仮想SDCardがシミュレーターにあることを確認しました.SDCardが利用可能かどうかを実行時に確認するコードもあります。

  • JDE バージョン 6.0 と Eclipse Helios

  • 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();
        }

    }
4

1 に答える 1

2

理想的には、これらのデータベース操作は操作をブロックしているため、独自のスレッドで実行する必要があります。私が役に立ったことの 1 つは、 sが適切に表示されない場合にコンストラクターからプッシュするときに、 pushScreen()s を呼び出しに入れることです。invokeLater()これにより、システムは を表示する前に実行する必要があるすべての処理を完了でき、Screenその後プッシュできるようになります。

于 2011-04-21T13:16:13.177 に答える