![]() |
|
Модераторы: javastic, AntonSaburov |
![]()
|
|
| hamsterKSU |
|
||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 401 Регистрация: 20.10.2006 Где: Украина, Херсон Репутация: 7 Всего: 11 |
вот возник вопрос у меня.
как правильно сделать архитектуру приложения. ведь ресурсы очень ограничены. я организовываю приложение следующим образом: в классе наследнике Midlet запускаю главный поток - в котором цикл типа:
имеется класс Main в котором выполняется вся логика - посредством флагов, тобиш имеется такая некрасивая функция которая, в приведенном выше коде, вызывается в цикле
и соответсвеенно DataPersistenceManager знает где взять данные а ScreenFactory знает как создать нужное представление в этих класса практически все методы статические и еще есть NetCommunicator - для работы с сетью. там тоже один постоянный поток и очередь запросов. поток wait-тится если очередь пуста и все это происходит асинхронно Обработка событий от пользователя(выбор пункта меню, нажатие на кнопку): в обработчике просто ставится нужный влаг в классе Main, а он потом сам все выполняет а теперь вопрос нормальный ли это подход? пожалуйста расскажите о своих подходах к построению архитектуры приложения |
||||
|
|||||
| W0LF |
|
|||
![]() alexander lonsky ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1164 Регистрация: 9.2.2006 Где: Ukraine.Dnepropet rovsk Репутация: 19 Всего: 20 |
Архитектура зависит :
1. Смотря что тебе надо - быстродействие или гибкость. они оба противоположны. 2. Телефоны сейчас стали немного посильнее чем были. В бизнес-приложениях я использовал следующую логику. Я уже где-то описывал это. Вот рисунок прикреплю. Там диаграмма, это я так когда-то делал. Там показан Логин. Делается LoginThread и у него в run() определяется все тело рисунка, правда там немного недорисовано, времени нет. в конечном результате все сохраняется в модель, а след. скрин берет все из модели и показывает на экран Присоединённый файл ( Кол-во скачиваний: 18 )
SequenceDiagramLogin.JPG 55,17 Kb-------------------- iOS developer |
|||
|
||||
| hamsterKSU |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 401 Регистрация: 20.10.2006 Где: Украина, Херсон Репутация: 7 Всего: 11 |
я тут просто пообщался с человеком он мне сказал следующее:
1. потоки каждый раз порождать не недо - лучше иметь один постоянно крутящийся(конечно ему делать wait или sleep) 2. указатель на формочку(канву) с lazy инициализацией и не килить если она еше тебе пригодится но это помойму все идет в плане быстродействия |
|||
|
||||
| W0LF |
|
|||
![]() alexander lonsky ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1164 Регистрация: 9.2.2006 Где: Ukraine.Dnepropet rovsk Репутация: 19 Всего: 20 |
Да, абсолютно прав. Если все бушь делать в одном потоке, например много транзакций разных, то тебе придется все это в него пихать. а когда придется расширять - заимеешься с этим всем. Один поток посоветовал, ибо на создание потока уходит больше времени, чем на его остановку и пробуждение -------------------- iOS developer |
|||
|
||||
| hamsterKSU |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 401 Регистрация: 20.10.2006 Где: Украина, Херсон Репутация: 7 Всего: 11 |
ну дык вот вывод какой?
для современных телефонов и для написания ПО(не игр) можно создавать новые потоки, а не держать один? |
|||
|
||||
| W0LF |
|
|||
![]() alexander lonsky ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1164 Регистрация: 9.2.2006 Где: Ukraine.Dnepropet rovsk Репутация: 19 Всего: 20 |
Да, но если у тебя будет одновременно много потоков - то получится переполнение. Вот винды например больше 10000 потоков держать не могут, моя нокия 3250 ложилась при 20 запущеных. просто если ты знаешь, что у тебя одновременно могу проскочить много потоков(вот у меня наприме пока логин не пройдет, я ни один другой вызвать не смогу), то желательно завести пул потоков и проверять, чтоб не посыпалось ничего. Но обычно такого быть не должно. Я по крайней мере с таким не сталкивался, а телефон ложил свой, чтоб просто проверить. Одновременно запущенных потоков наверно лучше иметь не больше 3-4, включая основной поток приложения
-------------------- iOS developer |
|||
|
||||
| hamsterKSU |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 401 Регистрация: 20.10.2006 Где: Украина, Херсон Репутация: 7 Всего: 11 |
понятно, большое спасибо.
т.е. так и остается что 1) один главный поток. 2) это поток работы с сетью 3-4) чета там по мелочам |
|||
|
||||
| W0LF |
|
|||
![]() alexander lonsky ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1164 Регистрация: 9.2.2006 Где: Ukraine.Dnepropet rovsk Репутация: 19 Всего: 20 |
Ну примерно
у меня было - 1 - главный поток 2 - сетевой 3 - обновление окна лоадинга -------------------- iOS developer |
|||
|
||||
![]()
|
FAQ раздела лежит здесь! |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Java ME (J2ME) | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |