BlackBerry - Uncaught исключение: приложение не отвечает; процесс прекращен - PullRequest
0 голосов
/ 07 декабря 2010

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

Неисследованное исключение: применение приложение (150) не отвечает; процесс прекращено

Вызов осуществляется из другого потока.

Поток передается моему CustomThreadManager для запуска

ClientChangeThread thread = new ClientChangeThread();
CustomThreadManager.Start(thread, true);

CustomThreadManager

ProgressPopup _progress = null; 
    if(showProgress){
        _progress = new ProgressPopup("Loading...");
        _progress.Open();
    }
    thread.start();             

    while (thread.isRunning())
    {
        try
        {
            CustomThread.sleep(300);
            if(showProgress){
                _progress.doPaint();
            }
        }
        catch (InterruptedException e)
        {
            Dialog.alert("Error contacting webservice\n" + e.getMessage());
            Functions.moveBack();
        }                   
    }
    if(showProgress)
        _progress.Close();

Некоторые звонки работают, а другие нет. Веб-сервис возвращает результаты довольно быстро, поэтому я не уверен, что его веб-сервис слишком медленный или проблемы с многопоточностью.

Любая помощь приветствуется.

1 Ответ

4 голосов
/ 07 декабря 2010

Thread .sleep () не снимает блокировки. Это означает, что ваш код для обновления индикатора выполнения в цикле while удерживает блокировку события пользовательского интерфейса и предотвращает другие обновления пользовательского интерфейса до завершения цикла while - в этом случае, когда thread.isRunning () возвращает false.

Вы можете использовать UiApplication.invokeLater(Runnable, long, boolean), чтобы запланировать повторяющееся обновление пользовательского интерфейса, которое будет удерживать блокировку событий только во время выполнения Runnable.

...