Как стать автором
Обновить

Комментарии 36

Эм… первый вопрос: с чего вы взяли, что destroyApp не вызывается AMS?
прекращением цикла жизни приложений руководит функция notifyDestroyed(), а не destroyApp()
Вы прямо с самого начала статьи всё напутали совершенно. Эти функции не имеют ничего общего и совершенно разные значения имеют. Первая всего лишь велит переводить в destroyed, а вторая как раз, грубо говоря, вызывается в мидлете для указания этого факта (причём флаг в параметре указывает можно ли отбрить, почитайте про это). Совершенно точно так же, как есть notifyPaused, например, и pauseApp.
 По сложившейся традиции, обычно блок данной функции выглядит следующим образом:
public void destroyApp(boolean unconditional) {
     notifyDestroyed(); // данный метод закрывает наше приложение
}</java>И блок этот выглядит так по традиции (у вас, например) именно только затем, чтобы можно было вызывать метод destroyApp (помимо вызова его AMS) из самой программы, чтобы завершить мидлет насильно, например по кнопке QUIT, ибо при этом в destroyApp обычно всякие ресурсы освобождают итд итп, чтобы не городить отдельный метод для этого. И при вызове notifyDestroyed из destroyApp обратного вызова не происходит, это всё даже в явадоках, вроде описано.
Ну и дальше код какой-то странный, честно говоря, не по-джавовски как-то, классы со строчных букв, переменные с заглавных и т.п. И писано про GameCanvas, а пишется на Canvas почему-то. Выясняется в итоге, что писали про свой класс, а взяли чужой? Оригинально-с :) За острый приступ ностальгии +1 всё равно можно поставить.
Да, начал про гейм канвас, но код так планировал на обычной канве, чтобы показать, как в ней протекает «двойная буферизация».
И я, если заметили, там указал, что код не свой использовал. Поэтому «не по-джавовски». :)
Да, напутал немного. destroyApp() вызывается самой AMS, когда, например, java-машине не хватает памяти в heap'е. Это да — в этом признаю ошибку.
Справедливости ради, не QUIT, а EXIT. Константа в javax.microedition.lcdui.Command.
Дайте готовый jar, пощупаю на телефоне :))
upwww вместо Screensaver.jar мне телефону подсунул загрузчик платного контента за смс, сцуко.
скачал по прямой ссылке. няшка! :)
Найду какой-нибудь второй телефон, сфотаю
У вас какой телефон, если не секрет? ;)
Philips X550 :)
Неплохой аппарат. Преимущественно, фили держат зарядку прекрасно, как и Sony Ericsson. Плюс ко всему, их очень тяжело разбить. :)
Трещину на экране я ему посадил, глюки с блютус гарнитурой наличенствуют, с жавой отдельная песня (например этот FREE_XXX_VIDEOS я удалить не могу — телефон уходит в перезагрузку сразу), но в остальном… как звонилка он работает на ура, батарею держит очень долго, MidpSSH и Opera Mini работают.
Всё-таки согласитесь, что фили — самые ударопрочные телефоны. Сам пользовался — знаю, что за зверь.
Ммм… Alcatel OT715 в алюминевом корпусе очень хорошо выдерживал вертикальное падение с 2х метров на бетон :)
Да, про алков забыл. Достаточно прочные, но слишком простые звонилки.
Тоже MidpSSH используете? :)
А что, есть альтернативы для J2ME под такие экраны?
К сожалению, альтернативы для J2ME нет вообще. Ни под какой экран. :)
Выше ответил. :)
Что-то не то:
Дико извиняюсь. Просто в тот момент уже с телефона сидел, поэтому скинул на что первое в закладках попалось. :)
Прощай, зарядка?
Вообще не особо тратится зарядка. Я кстати засекал ради интереса: у меня LG KP500 и до полной разрядки с включенным скринсейвером она работала ~17 часов.
Это при том, что зарядки оставалось ~40%
Поставил скринсейвер на свой Sony Ericsson K550i. Для чистоты эксперимента зарядил его полностью. Как сядет батарейка — отпишусь.
Вам будет интересна статья по геймдеву для J2ME. За пример думаю взять текущую поделку, которая скоро будет в Ovi Store
Это был вопрос!
Не плохо было бы. Искал литературу по j2me — много старых материалов. Хотелось бы увидеть что-то более современное.

Так же хотел спроить про интерфейс приложения. Его тоже лучше через canvas рисовать? Слишком неразнообразен набор стандартных элементов.
В пакете javax.microedition.lcdui реализован весь необходимый UI. К сожалению, на рынке J2ME телефонов ситуация такая же, как когда-то была между Netscape и IE. Каждый производитель отрисовывает стандартные элементы UI по-своему. Красивые же интерфейсы, которые выглядят одинаково на всех устройствах (Jimm, за примером далеко ходить не надо) рисуются на Canvas, да. Есть готовые библиотеки для отрисовки красивого UI на Canvas.
Я лично постигал искусство программирования под J2ME по этим самым старым материалам и, собственно, небезызвестной книге Буткевича, которая новой тоже не является.
Значит решено — статье быть. Хотя, если честно, в них не будет никакой новизны. Код почище, логика по логичнее (извиняюсь за каламбур), ну и описывать процесс буду более детально. :)
Я не сильно упорствовал в освоении. Просто заметил GameCanvas, о котором я не знал. Полагаю, могу еще что-нибудь открыть для себя.
Если возникнут вопросы — пишите, спрашивайте. Ждём-с. ;)
Мне интересно, кто-нибудь сам решился скомпилировать приведённые мною исходники? :)
Вторая часть моих размышлений и растлоковании теории создания J2ME MIDlet'ов — читать здесь.
Зарегистрируйтесь на Хабре , чтобы оставить комментарий

Публикации