![]() |
|
Модераторы: javastic, AntonSaburov |
![]()
|
|
| n1ke |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 26 Регистрация: 3.12.2006 Репутация: нет Всего: нет |
Всем привет!
Есть потребность обновлять мидлет динамически, то-есть, мидлет периодически чекает сервер в поиске новой версии и если таковая есть, то скачивает её и инсталит. Вопрос такой, это ваще реально и если да, то как это можно сделать? |
|||
|
||||
| W0LF |
|
|||
![]() alexander lonsky ![]() ![]() ![]() Профиль Группа: Участник Сообщений: 1164 Регистрация: 9.2.2006 Где: Ukraine.Dnepropet rovsk Репутация: 19 Всего: 20 |
-------------------- iOS developer |
|||
|
||||
| Выхухоль |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 85 Регистрация: 9.10.2008 Где: Ташкент Репутация: 2 Всего: 2 |
W0LF, Что то непонятно что это означает?
Мне кстати тоже очень интересно есть ли способы обновления мидлета? |
|||
|
||||
| eugine_s |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 581 Регистрация: 14.11.2007 Где: Киев Репутация: 17 Всего: 17 |
1. Midlet.platformRequest("http://site.com/update.jad"); 2. Midlet.notifyDestroyed();
platformRequest() откроет встроенные браузер телефола и браузер будет открывать ссылку (http://site.com/update.jad) наверное лучше сразу за платформРеквест закрывать мидлет: 1) не все телефоны могу вызвать платформРеквест паралельно с выполнением мидлета 2) мидлет все равно нужно будет закрыть перед обновлением. |
|||
|
||||
| Окунь |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 59 Регистрация: 8.2.2007 Где: Москва Репутация: 2 Всего: 2 |
1) это так. Если совсем точно, то по возвращаемому значению платформРеквест можно узнать, необходимо ли закрыть мидлет или можно оставить приложение работать в фоне 2) на небольшой части телефонов можно переустанавливать приложение не закрывая его(!). Правда, сам я знаю только одну такую модель - SonyEricsson G502. Но скорее всего, эта функция поддерживается всеми сониэриксонами JP-8 |
|||
|
||||
| Dummy |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 263 Регистрация: 21.5.2007 Репутация: 7 Всего: 19 |
Мидлет вообще не должен заботиться о совершении самоубийства при запуске обновления по platformRequest(). Он должен обрабатывать соответствующим образом возвращаемое значение от platformRequest(), содержать необходимую обработку в destroyApp() и / или в destroyApp(), и только. По MIDP 2.0, платформа сама должна решить, нужно ли ей прибить текущий мидлет или нет.
|
|||
|
||||
| Окунь |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 59 Регистрация: 8.2.2007 Где: Москва Репутация: 2 Всего: 2 |
Должен. Мое прочтение) явадоков к платформРеквест: если платформа не может выполнить запрос до завершения мидлета, то она не обязана предпринимать попытки к его завершению. Она будет просто ждать, пока мидлет сам себя не закроет. Это сообщение отредактировал(а) Окунь - 13.10.2008, 16:51 |
|||
|
||||
| Dummy |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 263 Регистрация: 21.5.2007 Репутация: 7 Всего: 19 |
Не должен. Мое прочтение явадоков к платформРеквест:
"Если устанавливаемый мидлет является обновлением запущенного в настоящий момент мидлета, платформа ОБЯЗАНА остановить исполняемый мидлет перед выполнением обновления. На некоторых платформах исполняемый мидлет МОЖЕТ быть остановлен перед выполнением установки." Итак, требование следующее: если платформа умеет выполнять обновление и при этом держать мидлет запущенным, она имеет право не убивать мидлет. Во всех остальных случаях она ДОЛЖНА безжалостно его уничтожить. |
|||
|
||||
| vdweller |
|
|||
|
Новичок Профиль Группа: Участник Сообщений: 35 Регистрация: 1.2.2008 Репутация: нет Всего: нет |
В документации это конечно хорошо, но фактически я например сталкивался с тем же сониэриком K700i который при попытке обновить работающий мидлет просто вис. Что тогда говорить про всякие LG и самсунги. |
|||
|
||||
| Окунь |
|
||||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 59 Регистрация: 8.2.2007 Где: Москва Репутация: 2 Всего: 2 |
Как я понимаю: после запуска процесса обновления платформа должна закрыть мидлет. Но обновление будет запущено только после того, как платформа сходит по адресу указанному в урле. Пока не будет загружены данные по этому урлу, платформа не знает, что речь идет об апдейте, поэтому насильно закрывать мидлет она не должна. Запрос будет обработан, как обычное обращение по хттп адресу: т.е. на некоторых платформах браузер будет открыт только после того, как мидлет сам себя закроет:
|
||||
|
|||||
| Окунь |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 59 Регистрация: 8.2.2007 Где: Москва Репутация: 2 Всего: 2 |
Я согласен с vdweller: лучше не полагаться на документацию, если код должен работать на большом числе телефонов, и всегда закрывать мидлет самостоятельно перед обновлением. Думаю, немало разработчиков ява-машин прочитало ту же самую документацию по-своему, не как я или Dummy
Например, на многих самсунгах вообще невозможно обновить мидлет, пока не удалишь старую версию. У них, на сколько знаю, ява машина даже не сертифицирована на соответствие MIDP. Поэтому документация им не указ. |
|||
|
||||
| Dummy |
|
||||||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 263 Регистрация: 21.5.2007 Репутация: 7 Всего: 19 |
И что, отказываемся от чтения спецификаций вовсе? Строго говоря, JVM, не прошедшая MIDP TCK-сертификацию, вообще не может гарантировать выполнение мидлетов))) Так что приводить такие примеры - это не очень содержательно. Такие бардачные реализации, как у корейских производителей, ориентированы в основном на предустановленные мидлеты. Да, вот с этим соглашусь
Во даже как сильно. Боюсь, с такими заключениями больному станет еще хуже, чем если бы мы следовали спецификациям буква в букву. К сожалению, по собственному опыту знаю, что баги в реализации JVM часто связаны именно с тем, что некоторая часть разработчиков
Но в другом я, конечно, я согласен на все сто: если мы можем применить общий подход, который позволяет обойти возможные баги некоторых реализаций, мы должны это делать (явный выход из мидлета после platformRequest() и может быть таким подходом). Так что если хотя бы на одном телефоне, сертифицированном на поддержку MIDP (SonyEricsson, я думаю, в первых рядах сертифицированных), известен этот баг, то надо позаботиться о том, чтобы разработать общий подход. Это сообщение отредактировал(а) Dummy - 14.10.2008, 10:45 |
||||||
|
|||||||
| Окунь |
|
|||
|
Шустрый ![]() Профиль Группа: Участник Сообщений: 59 Регистрация: 8.2.2007 Где: Москва Репутация: 2 Всего: 2 |
Я полностью под этим подпишусь, если добавить еще один пункт: код надо подстраивать не только под баги сертифицированных ява-машин, но и под баги несертифицированных. Мы пишем не для производителя телефонов. Мы пишем для обычных пользователей. А им все равно, что за ява-машина у них на телефоне. Поэтому самсунги занимают второе место по продажам в России. И нам придется мириться с тем, что самсунговские разработчики не умеют читать документацию. Так что не надо меня упрекать в пренебрежении к стандартам. Правила игры устанавливаю не я (не пишу JVM). И из документации беру только то, что будет точно работать везде. А кода, где возможны разночтения, стараюсь избегать. Поэтому перед обновлением мидлета обязательно его закрою. Это сообщение отредактировал(а) Окунь - 14.10.2008, 11:08 |
|||
|
||||
| Dummy |
|
|||
|
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 263 Регистрация: 21.5.2007 Репутация: 7 Всего: 19 |
ППКС, что ж тут сделаешь. Ситуация со стандартизацией в J2ME плачевная. И не думал. Мы тут, на форуме, обсуждаем всякие вопросы о программировании, упреками не занимаемся))) Чесслово, я вечерами не молюсь на спецификации |
|||
|
||||
![]()
|
FAQ раздела лежит здесь! |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | Java ME (J2ME) | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |