Существует ли Android AsyncTaskQueue или подобное?

Ответ на этот вопрос изменился в C ++ 17.

Оценка перегруженных операторов теперь упорядочена так же, как и для встроенных операторов (C ++ 17 [over.match.oper ] / 2).

Кроме того, теперь <<, >> и операторы подписи теперь имеют левый операнд , упорядоченный до справа, а постфиксное выражение вызова функции - упорядочивается до оценки аргументов.

(Другие бинарные операторы сохраняют свое предыдущее упорядочение, например + по-прежнему не подвержены последовательности).

Итак, код в вопросе должен теперь выводить Value of test is : 0 Return value of function is : 1 Value of test : 1. Но совет «Не делай этого» по-прежнему разумен, учитывая, что для обновления до C ++ 17 потребуется некоторое время.

1
задан Ben L. 12 June 2010 в 18:28
поделиться

2 ответа

Клавиша объясняется в примере List13.java

В основном вам нужно отслеживать состояние прокрутки вашего listView и уведомлять адаптер, когда он будет готов сделать что-то медленное с только видимым Предметы.

Также обратите внимание, что сохранение изображений на диск - очень медленный процесс. Используя состояние кеш-памяти на основе памяти значительно улучшит вашу производительность заявление.

1
ответ дан 2 September 2019 в 23:48
поделиться
  1. Я вижу, как вы декодируете изображение и сжимаете его обратно на диск, а затем снова декодируете. Думаю, не очень эффективно. Вы можете просто сохранить поток из сети на диск, а затем распаковать его. Это было бы всего одно распаковывание вместо трех сжатий / распаковок. Вы сэкономите много времени процессора.

  2. Я думаю, что AsyncTask создает несколько потоков для нескольких изображений. Таким образом, несколько изображений сжимаются / распаковываются одновременно, несколько потоков борются за процессорное время, что не очень хорошо. Насколько я знаю, AsyncTask использует пул потоков, поэтому он не запускает новый поток для каждого изображения. Но все равно несколько потоков одновременно - это не очень хорошо. Я согласен, что очередь была бы намного эффективнее. Реализацию не так уж и сложно создать самостоятельно. Я использую свою собственную реализацию очереди, и меня она вполне устраивает.

  3. Если у вас есть собственный поток, я думаю, можно было бы дать ему более низкий приоритет. Это сделает пользовательский интерфейс более отзывчивым.

  4. Вам определенно понадобится какой-то кеш в памяти, иначе пользовательский интерфейс не будет достаточно быстрым. Распаковка идет медленно. Вы можете хранить не все изображения, а только наиболее часто используемые. Вы можете использовать SoftReference для реализации кеширования. Вы можете использовать опцию inSampleSize, чтобы уменьшить размер ваших растровых изображений и занимать меньше памяти Странная проблема нехватки памяти при загрузке изображения в объект Bitmap .

Я сделал полный пример LazyList и опубликовал исходный код, также может быть полезно Ленивая загрузка изображений в ListView .

1
ответ дан 2 September 2019 в 23:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: