Модель потоковой передачи 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... поверьте мне!
Ответ 4
Единственная проблема, о которой я могу думать, обсуждается в ответе на другой вопрос о стеке_перехода.