2010-08-02 2 views
0

В настоящее время я разрабатываю программу, которая использует прокручиваемое/масштабируемое изображение в качестве основного пользовательского интерфейса. Он использует холст, который манипулирует матрицей, чтобы пересечь большую площадь. Вместо того, чтобы загружать сверхбольшие битмапы в память, я хотел использовать систему плитки для загрузки 256 на 256 квадратов. Моя проблема в том, что приложение будет отставать, когда изображения загружаются в память. Я использую простой внешний и внутренний цикл для загрузки фрагментов, если они равны нулю, и если пользователь в какой-то мере увеличивает масштаб, все плитки исчезают и отображается более низкая версия изображения целиком. Ive было направлено в направлении асинхронной загрузки изображения, похоже, что это предотвратит отставание, пока изображение загрузится в память, но я не знаю, как начать это, и задавался вопросом, есть ли у кого-нибудь какие-либо советы о том, как обычно асинхронно загружать растровые изображения в холст. Благодаря!Загрузка асинхронного изображения и андроидальное изображение

ответ

1

Я просто использую второй поток, чтобы сделать что-нибудь, что может занять некоторое время, чтобы убедиться, что пользовательский интерфейс всегда приятный и отзывчивый. Вы даже можете снизить приоритет этого потока, если пользовательский интерфейс содержит анимацию (например, прокрутку), чтобы избавиться от заикания.

Вы можете использовать второй объект Thread, который отправляет сообщение через обработчик, когда это будет сделано, или вы можете использовать AsyncTask.

+0

Я рассмотрю оба из них, спасибо. Как только у меня будет задача async загружать мои растровые изображения в память и загружать их в свой пользовательский интерфейс после того, как они будут выполнены, что будет самым эффективным способом перекодировки растровых изображений, чтобы избежать ошибки в памяти? другая задача async, которая проверяет, что растровые изображения больше не просматриваются? – jfisk

+1

Bitmap.recycle(), чтобы ускорить их уничтожение. Помимо этого, самое важное - убедиться, что вы больше не ссылаетесь на них. Будьте предельно осторожны со статическими элементами и не забудьте удалить их из любых массивов/списков, которые у вас есть, включая массивы представлений, указывающие на чертежи, указывающие на эти растровые изображения :) – EboMike

+0

awsome, большое вам спасибо. использовать bitmap.recycle(), лучший способ определить, больше ли просматривается растровое изображение, чтобы иметь массив, который записывает, какие растровые изображения рисуются, а затем цикл for, который проходит через каждый растровый рисунок, чтобы увидеть, не совпадает ли эти ценности? Это то, что у меня есть сейчас, и кажется, что должен быть более простой способ определить, какие растровые изображения рисуются на экране. – jfisk

Смежные вопросы