2 вопроса по MP
1. Как выгружать ресурсы из памяти телефона? Я так понимаю, все картинки после того, как они стали не нужны, все равно лежат в памяти и замедляют работу мидлета? Вроде где-то читал, что в java есть функция-чистильщик памяти или что типа этого, но я в джаве не силен :(
2. Можно ли создавать в MP динамические массивы? |
Ответ: 2 вопроса по MP
1.Память чистится сама при завершении работы приложения.
2.Стандартных функций нет, если только описывать нужные массивы в отдельной библиотеке, и то, работать с ними как с массивами не удастся. |
Ответ: 2 вопроса по MP
:stop: я имел в виду чистку памяти во время работы мидлета.
|
Ответ: 2 вопроса по MP
Во время работы скорее всего не получится, в java можно уничтожить объект, приравняв его null, т.е. фактически пустому объекту, в МП это недоступно, функций очистки, как таковых, нет.
|
Ответ: 2 вопроса по MP
1. Чистить память пусть косвенно, но можно. Допустим, тебе нужно очистить оперативную память от ненужных картинок img1 и img2. При объявлении переменных сразу объявляешь не 2, а 3 картинки примерно так:
Var img1, img2, spacer: image; Как известно, картинки нужно же ещё и загружать примерно так: img1:=LoadImage('/image.png'); img2:=LoadImage('/fon.png'); Заметь, картинка spacer как бы не загружена, то есть фактически она равна null (указывает на несуществующую картику). Тогда для очистки памяти достаточно будет написать пару операторов: img1:=spacer; img2:=spacer; И всё. Через какое-то время начнет работать Сборщик Мусора (aka Garbage Collector), он и почистит память от неиспользуемых картинок т.к. они в памяти есть, но ни одна из переменных на них не ссылаются. Для ускорения вызова Сборщика Мусора нужно вызвать метод gc(). Правда делать это можно только из Java, а из MIDlet Pascal пока никак. Даже дополнительной библиотеки для работы со Сборщиком Мусора я так и не обнаружил. Досадное недоразумение. Может, со временем появится? Писать там строк 5 всего. Если картинка используется только один раз (например, заставка), то её лучше в переменные и не загружать: DrawImage(LoadImage('/logo.png'), 0, 0); Repaint; Delay(1000); 2. Можно. Правда пока только для массивов строк. Есть такая библиотека Lib_vdata называется. Там можно добавлять текстовые строки в массив и при этом он будет автоматически расширяться. Очень удобно при чтении названий файлов в какой-нибудь директории когда не знаешь толком сколько же там этих файлов. |
Ответ: 2 вопроса по MP
Да, на счет пустой картинки я не подумал.
|
Ответ: 2 вопроса по MP
odd, спасибо :super:
Посмотрел библиотечку vdata, вроде все понятно. Возник еще один важный вопрос: есть ли способ представить картинку в виде массива чисел? |
Ответ: 2 вопроса по MP
Такая функция есть в библиотеке Lib_ui.
Кстати, пробовал очистку ресурсов, результаты не очень обнадеживающие. Такой код Код:
program imFreeTest; Код:
980096//до заргузки Попробую сделать библиотеку. К тому же, как я понимаю, при использовании DrawImage(LoadImage('/logo.png'), 0, 0); изображение все равно остается в памяти. |
Ответ: 2 вопроса по MP
Написал библиотеку.
http://forum.boolean.name/showthread.php?t=6021 |
Ответ: 2 вопроса по MP
Цитата:
|
Ответ: 2 вопроса по MP
Опять напутал, не в ui, а в Lib_cnv2(get_rgb).
|
Ответ: 2 вопроса по MP
Теперь вижу. Только не понимаю, как ею пользоваться?
|
Ответ: 2 вопроса по MP
Сам не пользовался, вот описание:
Код:
public void drawRGB(int[] rgbData, |
Ответ: 2 вопроса по MP
Почти как в QBasic'е :-)
|
Часовой пояс GMT +4, время: 10:17. |
vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot