Лучший способ загрузить изображения из содержимого XML - PullRequest
0 голосов
/ 25 января 2012

Я разрабатываю приложение для Android, которое будет отображать некоторые новости, которые будут получены с удаленного URL-адреса в формате xml, например http://adomain/latest.xml

Файл XML имеет следующий формат:

<articles>
<article>
    <id>6</id>
    <title>A sample title</title>
    <image>http://adomain/images/anImage.jpg</image>
    <lastupdate>1326938231</lastupdate>
    <content><![CDATA[Sample content]]></content>
</article>
...
</articles>

Я создал службу обновлений, которая прослушивает изменения подключений, и когда система подключается через Интернет, она пытается загрузить файл XML.Затем проанализируйте его и сохраните данные.Программа обновления запускается в отдельном потоке каждые 10 минут.

Мой вопрос: каков наилучший способ обработки изображений?

a) Должен ли я выполнять ленивую загрузку изображений, когда отображается новость

ИЛИ

b) Должен ли я загружать изображение при разборе XML-файла?

Ответы [ 3 ]

0 голосов
/ 25 января 2012

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

0 голосов
/ 25 января 2012

Просто извлеките <Image> данные тега из вашего XMl.

String imgURL  = your <Image> value;  

 ImageView  imageView = new ImageView(this);

                Bitmap  bmp = BitmapFactory.decodeStream(new java.net.URL(imgURL).openStream());

                    imageView.setId(i);
                    imageView.setImageBitmap(bmp);

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

Android provide directly show image from URL:

Для сохранения изображения на SD-карту:

File file = new File (pathOfSdCard, iamgeName);

try {                      
    file.createNewFile();
    FileOutputStream out = new FileOutputStream(file);
    bitmap.compress(Bitmap.CompressFormat.JPEG, 10, out);
                out.flush();
                out.close();

    } catch (Exception e) {
                e.printStackTrace();
    }

Поместите строку в AndroidMenifest:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" /> 

Это все, что я использую в своем приложении.он отлично работает.

Надеюсь, это вам очень поможет.

0 голосов
/ 25 января 2012

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

...