Экран загрузки не работает в Blackberry? - PullRequest
0 голосов
/ 14 октября 2011

Я хочу реализовать загрузочный экран в Blackberry.Я пробую код из следующей ссылки на форум поддержки , используя следующий код

PleaseWaitPopupScreen.showScreenAndWait(new Runnable() {

        public void run() {
                           //**Segment 1** here i write the code for  network call
                                    }
                           }, "please wait");
                     // **Segment 2**:Here processing the data get from network call

проблема в том, что сегмент 2 работает до завершения сегмента 1. Я также пробую следующий код

HorizontalFieldManager popHF = new HorizontalFieldManager();
    popHF.add(new LabelField("Pls wait..."));
    final PopupScreen waitScreen = new PopupScreen(popHF);
    new Thread()
    {
        public void run() 
        {

            synchronized (UiApplication.getEventLock()) 
            {
                UiApplication.getUiApplication().pushScreen(waitScreen);
            }
           // **Segment 1**Here Some Network Call 

          synchronized (UiApplication.getEventLock()) 
            {
                UiApplication.getUiApplication().popScreen(waitScreen);

            }
         }
     }.start();
     // **Segment 2**:Here processing the data get from network call

возникает та же проблема.Любая помощь будет оценена.

спасибо

1 Ответ

1 голос
/ 14 октября 2011

На самом деле это зависит от того, что вы делаете в сегменте 2. Если нет никаких действий пользовательского интерфейса, просто переместите сегмент 2 в поток, который выполняет http-вызов.Например:

final PopupScreen waitScreen = new PopupScreen(popHF);
new Thread()
{
    public void run() 
    {
        synchronized (UiApplication.getEventLock()) 
        {
            UiApplication.getUiApplication().pushScreen(waitScreen);
        }
        // **Segment 1**Here Some Network Call

        // **Segment 2**:Here processing the data get from network call

        synchronized (UiApplication.getEventLock()) 
        {
            UiApplication.getUiApplication().popScreen(waitScreen);
        }
     }
 }.start();

Но если внутри сегмента 2 есть действия пользовательского интерфейса, вызовите его в потоке пользовательского интерфейса сразу после того, как вы откроете экран ожидания:

final PopupScreen waitScreen = new PopupScreen(popHF);
new Thread()
{
    public void run() 
    {
        synchronized (UiApplication.getEventLock()) 
        {
            UiApplication.getUiApplication().pushScreen(waitScreen);
        }
        // **Segment 1**Here Some Network Call

        synchronized (UiApplication.getEventLock()) 
        {
            UiApplication.getUiApplication().popScreen(waitScreen);
            // **Segment 2**:Here processing the data get from network call
        }
     }
 }.start();
...