Squeak.ru - шаблоны программирования

Данные загрузки Android вместе с несколькими изображениями в SQLite

Необходимо загрузить канал с URL-адреса и сохранить данные элемента канала в sqlite. Некоторые элементы фида могут содержать изображения. Изображения необходимо загрузить и сохранить на устройстве (ссылка будет сохранена в sqlite). Все это происходит в фоновом режиме. Никакого взаимодействия с UI / основным потоком не требуется.

Я закодировал часть загрузки данных канала (JSON), парсинга данных JSON (с использованием GSON) и сохранения их в базе данных в одной AsyncTask. Могу ли я иметь логику загрузки изображений в той же AsyncTask? или мне следует запустить другие задачи Async для загрузки изображений внутри текущей задачи Async? Я читал об обработчиках, нужно ли мне использовать обработчики для загрузки изображения?

Я думаю о сохранении URL-адресов изображений в объекте в основной задаче Async и запуске другой задачи AsyncTask onPostExecute, которая последовательно загружает изображения. Есть ли проблемы с этим подходом?

Меня беспокоит, что произойдет, если пользователь покинет приложение во время выполнения вышеуказанного процесса. Может быть между обработкой корма. Если я использую «Сервис», будет ли процесс продолжаться до тех пор, пока он не завершится, даже если пользователь покинет приложение? (Я прочитал документацию, но не получил эту часть). Или мне следует программно отслеживать прогресс, например, элементы, которые были обработаны, и не обрабатывать их в следующий раз и т. Д.?

Спасибо за вашу помощь.


Ответы:


1

ЕСЛИ вы хотите сохранить изображение в базе данных, вам нужно сначала загрузить изображение, а затем преобразовать его в растровое изображение, а затем в массив байтов. И при получении из базы данных необходимо будет выполнить ту же обратную процедуру.

                         or

вы можете хранить изображение как BLOB в своей базе данных

public static byte[] urlToImageBLOB(String url) throws IOException {
    httpclient = new DefaultHttpClient();
    entity = null;
    httpGet = new HttpGet(url);
    response = httpclient.execute(httpGet);
    if (response.getStatusLine().getStatusCode() == HttpStatus.SC_OK) {
        entity = response.getEntity();
    }
    return EntityUtils.toByteArray(entity);
} 

Теперь вам нужно получить изображение

public static Bitmap getImageFromBLOB(byte[] mBlob) {
    byte[] bb = mBlob;
    return BitmapFactory.decodeByteArray(bb, 0, bb.length);

}

Чтобы установить изображение

imageView.setImageBitmap(getImageFromBLOB(cursor.getBlob(object.getColumnIndex("book_thumb"))));

OR

вы также можете использовать Handler для задачи

protected Drawable Imagehandler(String url) {
    try {
        url=url.replaceAll(" ", "%20");
        InputStream is = (InputStream)this.fetch(url);
        Drawable d = Drawable.createFromStream(is, "src");
        return d;
    } catch (MalformedURLException e)
    {   
        System.out.println(url);
        System.out.println("error at URI"+e);
        return null;
    } 
    catch (IOException e) 
    {
        System.out.println("io exception: "+e);
        System.out.println("Image NOT FOUND");
        return null;
    } 
}

protected Object fetch(String address) throws MalformedURLException,IOException {
    URL url = new URL(address);
    Object content = url.getContent();
    return content;
} 

это преобразует ваш imageUrl в Drawble во время выполнения, а затем установите Drawble в Imageview галереи

21.04.2014
  • Вместо того, чтобы сохранять изображение в базе данных, я хочу загрузить его на устройство (кеш) и сохранить ссылку (путь к файлу и имя) в базе данных. Спасибо за код. В основном я ищу помощь в улучшении использования асинхронных задач. 21.04.2014
  • Новые материалы

    Угловая структура архитектуры
    Обратите внимание, что эта статья устарела, я решил создать новую с лучшей структурой и с учетом автономных компонентов: https://medium.com/@marekpanti/angular-standalone-architecture-b645edd0d54a..

    «Данные, которые большинство людей используют для обучения своих моделей искусственного интеллекта, поставляются со встроенным…
    Первоначально опубликовано HalkTalks: https://hacktown.com.br/blog/blog/os-dados-que-a-maioria-das-pessoas-usa-para-treinar-seus-modelos-de-inteligencia-artificial- ja-vem-com-um-vies-embutido/..

    Сильный ИИ против слабого ИИ: различия парадигм искусственного интеллекта
    В последние годы изучению и развитию искусственного интеллекта (ИИ) уделяется большое внимание и прогресс. Сильный ИИ и Слабый ИИ — две основные парадигмы в области искусственного интеллекта...

    Правильный способ добавить Firebase в ваш проект React с помощью React Hooks
    React + Firebase - это мощная комбинация для быстрого и безопасного создания приложений, от проверки концепции до массового производства. Раньше (знаете, несколько месяцев назад) добавление..

    Создайте API с помощью Python FastAPI
    Создание API с помощью Python становится очень простым при использовании пакета FastAPI. После установки и импорта вы можете создать приложение FastAPI и указать несколько конечных точек. Каждой..

    Веселье с прокси-сервером JavaScript
    Прокси-серверы JavaScript — это чистый сахар, если вы хотите создать некоторую общую логику в своих приложениях, чтобы облегчить себе жизнь. Вот один пример: Связь клиент-сервер Мы..

    Получить бесплатный хостинг для разработчиков | Разместите свой сайт за несколько шагов 🔥
    Статические веб-сайты — это веб-страницы с фиксированным содержанием и его постоянным содержанием. Но теперь статические сайты также обрабатывают динамические данные с помощью API и запросов...