сбой приложения при загрузке миниатюр из медиатеки

Я интегрирую галерею изображений в свое приложение для Windows Phone 8.

вот xaml-код:

        <phone:LongListSelector Name="listdata" LayoutMode="Grid"
JumpListStyle="{StaticResource JumpListStyle}" GridCellSize="147,147">
            <phone:LongListSelector.ItemTemplate>
                <DataTemplate>
                    <Border BorderBrush="White" BorderThickness="1">
                        <Image Source="{Binding thumbnail}" Height="147" Width="147"/>
                    </Border>
                </DataTemplate>
            </phone:LongListSelector.ItemTemplate>

        </phone:LongListSelector>

    </Grid>

и вот класс imagemodel:

public class imagemodel
{
    public WriteableBitmap thumbnail { get; set; }
    public string name { get; set; }
    public Picture image;
    private Picture picture;

    public imagemodel(Picture pic)
    {
        image = pic;
        name = pic.Name;
        thumbnail = PictureDecoder.DecodeJpeg(pic.GetThumbnail());

    }



}

MediaLibrary lib = новая библиотека MediaLibrary();

    public void loadmygallery()
    {

        foreach (var picture in lib.Pictures)
        {

                imagemodel im = new imagemodel(picture);
                collection.Add(im);

        }

    }

приложение вылетает при открытии страницы галереи. Возможно, это связано с перегрузкой памяти. Если я ограничиваю отображаемые миниатюры до 30 или не очень большим числом, код работает нормально. Есть ли способ показать все миниатюры ??


person nipun.birla    schedule 11.10.2014    source источник


Ответы (1)


Поскольку контекста мало, и я не вижу, как обрабатываются изображения, мне трудно рассказать вам о вашей ошибке, но... Я думаю, что миниатюры не являются причиной, если они ДЕЙСТВИТЕЛЬНО работают нормально, когда вы ограничиваете считать. Попробуйте изменить свой код, чтобы НЕ сохранять изображения, обычно программы кэшируют миниатюры в отдельный файл или, в худшем случае, в память (только плохо, потому что изображения должны каждый раз полностью обрабатываться) и отображать миниатюры, чтобы ваше приложение не сохраняло все вашу медиатеку в оперативную память. Само изображение читается только при его открытии.

person Zero    schedule 11.10.2014
comment
см. редактирование, чтобы увидеть, как изображения обрабатываются в коде - person nipun.birla; 11.10.2014
comment
Не могли бы вы ограничить количество изображений до 10 или 20, загрузить приложение и проверить использование оперативной памяти? Также дайте мне знать размеры изображений (в мб) - person Zero; 11.10.2014