проблема с отображением экрана в приложении Blackberry UI на основе данных в базе данных sqlite - PullRequest
0 голосов
/ 21 апреля 2011

Я пытаюсь нажать на экран, чтобы основная UiApplication (MyApp) основывалась на том, создана ли база данных или нет, и если она создана, то это ли она emapty или у нее есть какие-то данные ... но когда я запускаю этот код, моя морская ягодаприложение jsts зависает ..

любая помощь приветствуется:)

Я проверил, есть ли в симуляторе виртуальная SDCard, и у меня даже есть код для проверки во время выполнения, доступна ли SDCard или нет.

  • JDE версии 6.0 с Eclipse Helios

  • подключить к BlackBerry Simulator: 9800

  • Os:32-битная версия Windows 7

ниже - мой код, который я использую в своем приложении

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

    }

1 Ответ

2 голосов
/ 21 апреля 2011

В идеале вы должны запускать эти операции базы данных в своих собственных потоках, так как они блокируют операции. Одна вещь, которая мне показалась полезной, это помещать мои pushScreen() s в invokeLater() вызовы, когда я выталкиваю их из конструктора, если они не отображаются должным образом. Это позволяет системе завершить все, что нужно сделать, до отображения Screen, и тогда она сможет нажать.

...