Модель потоковой передачи BlackBerry

Я прочитал много комментариев, мимоходом отметив, что черная модель BlackBerry отличается от стандарта Java и может вызывать проблемы, но никакое количество поисковых запросов не просвело меня от того, что это означает.

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

Может ли кто-нибудь описать, как отличается модель потоков BlackBerry, и как я, как разработчик, должен учитывать это? Очевидно, что любые ссылки на эту тему также будут замечательными.

Ответ 1

1.UI Операции пользовательского интерфейса всегда должны выполняться в потоке пользовательского интерфейса. Чтобы выполнить такие функции, как LabelField.setText("foo");, вам нужно сделать:

UiApplication.getUiApplication().invokeLater(new Runnable(){
  public void run(){
    myLabelField.setText("foo");
    myLabelField.setDirty(true);
  }
});

Довольно легко, да?

2.Network Операция сети должна никогда работать в потоке пользовательского интерфейса. Делать такие вещи:

new Thread(){
  public void run(){
    HttpConnection hc = 
            (HttpConnection)Connector.open("http://www.stackoverflow.com");
  }
}.start();

Эти два основных принципа очень важны. Вы должны всегда заботиться о том, в какой нити вы работаете.

Ответ 2

Два quirks, которые я нашел на форумах Blackberry:

  • Вектор не является безопасным потоком.
  • Если вы создаете собственное приложение CLDC для Blackberry, статичность не обязательно является синглом над виртуальной машиной.

Ответ 3

Различия не в модели Threading, а в том, как вы их используете, и как сказано в начальном сообщении. Вы не можете использовать нить ui для сетевых подключений или вы не можете использовать сетевое соединение для обновления ui,

В этом вопросе есть много различий между тем, что вы назвали десктопом java для java Blackberry... поверьте мне!