Модераторы: javastic, AntonSaburov

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Даже не знаю как назвать... 
:(
    Опции темы
SatanClaus
Дата 8.8.2007, 16:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 116
Регистрация: 20.6.2007

Репутация: 3
Всего: 3



Суть проблемы в том, что у меня джарик весит около 180 кб. 160 кб из них - картинки... Я, как положено, загружаю их все в память, потом около 20 кб освобождаю...
Так вот, проблема в том, что в начале я некоторые картинки не отображаю, т. е. они лежат себе спокойно где-то в памяти, но когда я их вызываю, то прорисовка изображения занимает примерно сек. 2. Если потом снова загрузить эту же картинку, то она прорисуется быстро...
Кто знает, что это за полтергейст? И можно ли как-то ускорить процес прорисовки?  smile 
PM MAIL   Вверх
W0LF
Дата 8.8.2007, 16:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


alexander lonsky
***


Профиль
Группа: Участник
Сообщений: 1164
Регистрация: 9.2.2006
Где: Ukraine.Dnepropet rovsk

Репутация: 19
Всего: 20



Цитата

Даже не знаю как назвать...


M
W0LF
как-то, но надо называть. таких названий пожалуйста больше не давай.

Цитата

Если потом снова загрузить эту же картинку, то она прорисуется быстро...

Быть может ты ее прорисовал уже на форме, а потом просто форму подставляешь? кусок кода можешь показать, который отвечает за это?


--------------------
iOS developer
PM MAIL WWW Skype GTalk   Вверх
SatanClaus
Дата 8.8.2007, 16:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 116
Регистрация: 20.6.2007

Репутация: 3
Всего: 3



Больше не буду...

Есть класс ImageManager, в котором все процедуры и Image статические...
В другом классе я их загружаю...

Код


    public static void setImageIndex(int index){                          //   Выбираю нужный рисунок
        currentImage = ImageManager.slaidshow[index - 1];
    }

    public void paint(Graphics g){                                                 // Собственно рисую этот рисунок
        g.drawImage(currentImage, 0, 0, Graphics.LEFT | Graphics.TOP);
//      -------------------------------------- Нижние кнопки -------------------------------------
        g.setClip(5, Setting.SCREEN_HEIGHT - Setting.HEIGHT_BUTTON, Setting.WIDTH_BUTTON, Setting.HEIGHT_BUTTON);
        g.drawImage(ImageManager.button, 5, Setting.SCREEN_HEIGHT - Setting.HEIGHT_BUTTON, Graphics.LEFT | Graphics.TOP);
        g.setClip(Setting.SCREEN_WIDTH - Setting.WIDTH_BUTTON - 5, Setting.SCREEN_HEIGHT - Setting.HEIGHT_BUTTON, Setting.WIDTH_BUTTON, Setting.HEIGHT_BUTTON);
        g.drawImage(ImageManager.button, Setting.SCREEN_WIDTH - Setting.WIDTH_BUTTON - 5, Setting.SCREEN_HEIGHT - Setting.HEIGHT_BUTTON * 2, Graphics.LEFT | Graphics.TOP);
        g.setClip(0, 0, Setting.SCREEN_WIDTH, Setting.SCREEN_HEIGHT);
    }



У меня есть методы и побольше, но они прорисовываются нормально... Не пойму, что за бок...

Добавлено через 1 минуту и 13 секунд
Это единственный класс, где выводится это изображение...
PM MAIL   Вверх
W0LF
Дата 8.8.2007, 16:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


alexander lonsky
***


Профиль
Группа: Участник
Сообщений: 1164
Регистрация: 9.2.2006
Где: Ukraine.Dnepropet rovsk

Репутация: 19
Всего: 20



Цитата

но когда я их вызываю, 

я от это не совсем догнал :(
то есть твой метод паинт рисует картинку первый раз на две секунды больше, чем например во второй раз?


--------------------
iOS developer
PM MAIL WWW Skype GTalk   Вверх
SatanClaus
Дата 8.8.2007, 16:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 116
Регистрация: 20.6.2007

Репутация: 3
Всего: 3



Точно. на эмуляторе конечно все рисуется нормально, а на телефоне вот такой бок.
PM MAIL   Вверх
W0LF
Дата 8.8.2007, 16:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


alexander lonsky
***


Профиль
Группа: Участник
Сообщений: 1164
Регистрация: 9.2.2006
Где: Ukraine.Dnepropet rovsk

Репутация: 19
Всего: 20



Код

g.setClip(0, 0, Setting.SCREEN_WIDTH, Setting.SCREEN_HEIGHT);

а чему равны SCREEN_WIDTH и SCREEN_HEIGHT?

Добавлено через 2 минуты и 37 секунд
и еще - ты уверен что именно paint() ждет?
поставь в нем время. посмотри скоко времени он занимает первый раз и второй.
может у тя чет происходит перед repaint() что и требует большего времени..
где ты делаешь repaint()?


--------------------
iOS developer
PM MAIL WWW Skype GTalk   Вверх
SatanClaus
Дата 8.8.2007, 17:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 116
Регистрация: 20.6.2007

Репутация: 3
Всего: 3



Для repaint() есть свой отдельный класс WorkCanvas. С ним, я уверен на 100%, все впорядке.
Я поробовал поменять очередь загрузки картинок в программе.
Те картинки, которые я загружаю первыми, отображаются нормально, те что позже - тормозят...
----------------------------------------------------------------------------------------------------------------------------------
И как я смогу проверить время ожидания, если на эмуляторе у меня все прекрасно работает?

Добавлено через 6 минут и 39 секунд
Как и предполагалось, эмулятор показал 0 мс в обоих случаях  smile 
PM MAIL   Вверх
W0LF
Дата 8.8.2007, 17:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


alexander lonsky
***


Профиль
Группа: Участник
Сообщений: 1164
Регистрация: 9.2.2006
Где: Ukraine.Dnepropet rovsk

Репутация: 19
Всего: 20



я у тебя еще спросил что с параметрами SCREEN_WIDTH и SCREEN_HEIGHT?
может они на самом деле меньше, чем высота и ширина экрана?
и получается так, что рисунок во второй раз рисуется в меньшую область, а края не затраются а остаются теми же..
Цитата(SatanClaus @  8.8.2007,  17:08 Найти цитируемый пост)
И как я смогу проверить время ожидания, если на эмуляторе у меня все прекрасно работает? 

Код

public void paint(Graphics g){                                                 // Собственно рисую этот рисунок
         int startTime = (int) System.currentTimeMillis();
        g.drawImage(currentImage, 0, 0, Graphics.LEFT | Graphics.TOP);
//      -------------------------------------- Нижние кнопки -------------------------------------
        g.setClip(5, Setting.SCREEN_HEIGHT - Setting.HEIGHT_BUTTON, Setting.WIDTH_BUTTON, Setting.HEIGHT_BUTTON);
        g.drawImage(ImageManager.button, 5, Setting.SCREEN_HEIGHT - Setting.HEIGHT_BUTTON, Graphics.LEFT | Graphics.TOP);
        g.setClip(Setting.SCREEN_WIDTH - Setting.WIDTH_BUTTON - 5, Setting.SCREEN_HEIGHT - Setting.HEIGHT_BUTTON, Setting.WIDTH_BUTTON, Setting.HEIGHT_BUTTON);
        g.drawImage(ImageManager.button, Setting.SCREEN_WIDTH - Setting.WIDTH_BUTTON - 5, Setting.SCREEN_HEIGHT - Setting.HEIGHT_BUTTON * 2, Graphics.LEFT | Graphics.TOP);
        g.setClip(0, 0, Setting.SCREEN_WIDTH, Setting.SCREEN_HEIGHT);
        int endTime = (int) System.currentTimeMillis();
        String time = String.valueOf(endTime - startTime); 
        g.drawString(time,...);
    }

и проверь реально на девайсе время первой и второй отрисовок


--------------------
iOS developer
PM MAIL WWW Skype GTalk   Вверх
SatanClaus
Дата 8.8.2007, 17:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 116
Регистрация: 20.6.2007

Репутация: 3
Всего: 3



С SCREEN_WIDTH & SCREEN_HEIGHT у меня тоже все впорядке...
Замеры произвел, в первом случае дало 1132, во втором 1 (или 0)

Добавлено через 2 минуты и 31 секунду
Загрузка другого дала 2150
PM MAIL   Вверх
W0LF
Дата 8.8.2007, 17:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


alexander lonsky
***


Профиль
Группа: Участник
Сообщений: 1164
Регистрация: 9.2.2006
Где: Ukraine.Dnepropet rovsk

Репутация: 19
Всего: 20



видишь, получается что в первом случае рисуется наоборот быстрее а не медленнее..


--------------------
iOS developer
PM MAIL WWW Skype GTalk   Вверх
SatanClaus
Дата 8.8.2007, 17:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 116
Регистрация: 20.6.2007

Репутация: 3
Всего: 3



Ты меня не понял,
один рисунок 1-й раз прорисовывался 1132 мс, второй раз - 0мс;
другой рисунок 1-й раз - 2150 мс, второй раз - 0 мс  smile 
PM MAIL   Вверх
nagliyvred
Дата 8.8.2007, 22:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 54
Регистрация: 2.10.2005

Репутация: 3
Всего: 3



Как вариант, что если добавить буфферизацию и сначала нарисовать этот image на mutable Image а потом уже этот mutable image на экран шлепнуть?
PM   Вверх
SatanClaus
Дата 9.8.2007, 10:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 116
Регистрация: 20.6.2007

Репутация: 3
Всего: 3



Пробовал уже, не помогло...  smile Все-равно долго прорисовывается...
PM MAIL   Вверх
zzzvyk
Дата 9.8.2007, 12:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 64
Регистрация: 21.4.2007
Где: Киев

Репутация: нет
Всего: нет



э-э-э по симпотомам похоже на проблемы с видеопамяттю. Телефончик то какой? Попробуй на других...интересно.
Не уверен точно но слышал что некоторые телефоны размещают картинки в общей памяти а при первой отрисовки копируют в видео. Хотя, странно конечно....
PM MAIL Skype   Вверх
SatanClaus
Дата 9.8.2007, 12:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 116
Регистрация: 20.6.2007

Репутация: 3
Всего: 3



Телефончик SE K700. Никогда не слышал о таких проблемах. И на эмуле K700 у меня все прорисовывается нормально... 
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса

  • Прежде чем задать вопрос прочтите это!
  • Литература по Java находится здесь.
  • Литературу по Java обсуждаем здесь.
  • Используйте теги [code=java][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда

  • FAQ раздела лежит здесь!
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Java ME (J2ME) | Следующая тема »


 




[ Время генерации скрипта: 0.0820 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.