4. Android-разработка. Хранение данных. | Технострим
4. Android-разработка. Хранение данных. | Технострим
https://www.youtube.com/watch?v=78YwQfoKANs
00:05 Работа с файлами в Android
• Обсуждение работы с файлами в Android, включая хранение данных и взаимодействие с файлами.
• Обсуждение различных типов файлов и их расположения в Android.
01:49 Работа с файлами в Android
• Обсуждение работы с файлами в Android, включая создание, чтение и запись файлов.
• Обсуждение использования различных классов и методов для работы с файлами.
09:16 Работа с файлами в Android
• Обсуждение работы с файлами в Android, включая чтение и запись файлов из разных папок.
• Обсуждение использования различных методов для работы с файлами, включая гет и опен.
14:11 Работа с файлами в Android
• Обсуждение работы с файлами в Android, включая внутреннее хранилище и разграничение доступа к файлам.
• Обсуждение использования метода контекста гет файл дир для определения местоположения файлов.
19:36 Работа с файлами на Android
• Обсуждение путей в файловой системе Android, где приложение может создавать и записывать файлы.
• Различие между путями для файлов на внутренней и внешней памяти.
30:27 Разрешение доступа к файлам
• Необходимость запрашивать разрешение у пользователя на запись файлов на внешнее хранилище.
• Использование метода startActivityForResult для получения разрешения от пользователя.
34:13 Работа с файлами в Android
• Обсуждение работы с обычными файлами и их доступа другими приложениями.
• Класс SharedPreferences для хранения примитивных типов данных в формате ключ-значение.
• В видео обсуждается использование метода getSharedPreferences для работы с настройками в Android.
• Этот метод принимает имя файла настроек и режим доступа к нему (например, "MODE_PRIVATE" или "MODE_WORLD_READABLE").
• Если указан режим "MODE_WORLD_READABLE", то файл настроек будет доступен другим приложениям.
39:28 Работа с настройками и их сохранение
• После вызова метода getSharedPreferences создается файл настроек с указанным именем.
• Для работы с настройками используется объект типа SharedPreferences, который имеет методы для получения и изменения значений.
• Для записи данных в файл используется метод apply, который инициирует запись измененных данных.
• Метод commit является блокирующим, а метод apply - неблокирующим.
43:20 Работа с настройками в разных активити
• Метод getSharedPreferences для активити возвращает SharedPreferences для текущей активити.
• Имя файла настроек будет соответствовать имени активити.
43:51 Работа с настройками в Android
• В видео обсуждается работа с настройками в Android, в частности, использование класса SharedPreferences для хранения настроек и их синхронизации с настройками на устройстве пользователя.
• Также упоминается возможность использования XML-файлов для описания настроек и их автоматического обновления при изменении.
49:07 Проблемы с производительностью и хранением данных
• Обсуждаются проблемы с производительностью при работе с большими объемами данных и сложности хранения двоичных данных.
• Упоминается, что SharedPreferences может быть недостаточно для сложных задач, и обсуждаются возможные альтернативы.
51:28 Проблемы с жизненным циклом приложения
• Обсуждаются возможные сценарии, когда настройки не сохраняются, и как это может привести к проблемам с производительностью и пользовательским опытом.
• Упоминается, что в некоторых случаях настройки могут не сохраняться из-за проблем с жизненным циклом приложения.
56:01 Решение проблем с жизненным циклом
• В видео обсуждаются возможные решения проблем с жизненным циклом приложения, включая использование интерфейса и реализацию для более детального контроля над процессом сохранения настроек.
58:05 Работа с базой данных Android
• Обсуждение работы с базой данных Android, которая хранится в одном файле и доступна через класс "Эскулайт".
• Упоминается метод "Эскулайт опен хелпер", который облегчает работу с базой данных, но его практическое применение неясно.
01:02:55 Создание таблиц и работа с базой данных
• Создание таблиц в базе данных с помощью класса "Эскулайт опен хелпер".
• Обсуждение методов "Крей тейбл" и "Апгрейд" для работы с базой данных.
01:09:08 Практическое применение "Эскулайт опен хелпер"
• Обсуждение возможности понижения версии приложения и работы с базой данных, если это необходимо.
• Упоминание о том, что практическое применение "Эскулайт опен хелпер" неизвестно.
01:12:42 Работа с базой данных SQLite
• В видео рассказывается о работе с базой данных SQLite, использовании методов insert, select, update и delete.
• Упоминается особенность SQLite, которая не позволяет вставить строку, если все поля нулевые.
• Объясняется, что курсор - это маркер в итоговом результате запроса, который указывает на определенную строку в ответе.
• Упоминается необходимость вызова метода close после работы с курсором для освобождения нативных ресурсов.
01:25:31 Использование базы данных для работы со списками
• Приводится пример использования базы данных для работы со списками, когда данные хранятся в файле.
• Объясняется, как использовать адаптер для работы с курсором и записи данных в поле текста.
01:27:45 Проблемы при работе с базой данных
• Упоминаются проблемы, которые могут возникнуть при работе с базой данных, такие как ошибки в запросах и несоответствие схемы базы данных.
• Рассказывается о проекте Room, который предлагает новый уровень абстракции над SQLite и решает некоторые проблемы при работе с базой данных.
01:29:57 Работа с базой данных в Android
• В видео рассказывается о работе с базой данных в Android с использованием библиотеки Room.
• Объясняется, как создавать классы для таблиц и методов работы с данными в базе данных.
• Демонстрируется, как использовать библиотеку для создания таблиц и методов работы с базой данных.
01:38:06 Работа с базой данных на главном потоке
• В видео обсуждается, как использовать библиотеку Room для работы с базой данных на главном потоке.
• Объясняется, что библиотека автоматически проверяет работу с системой ввода-вывода на главном потоке.
• Демонстрируется работа с базой данных, созданной с помощью библиотеки Room, и сравнение с базой данных, созданной с помощью SQLite.
• Обсуждается возможность использования разных средств для просмотра данных в базе данных, включая программы для работы с файлами.
01:42:57 Работа с контент-провайдерами
• Контент-провайдеры используются для передачи данных из одного приложения в другое.
• Пример: приложение контактов, которое предоставляет список контактов другим приложениям.
01:45:13 Реализация контент-провайдера
• В контент-провайдере необходимо реализовать несколько методов, включая методы вставки, обновления, удаления и запроса данных.
• Правила для работы с урлами и таблицами определяются в манифесте приложения.
01:50:37 Взаимодействие с контент-провайдером
• В другом приложении можно получить доступ к данным из контент-провайдера, используя его урлы и правила.
• Жизненный цикл контент-провайдера включает в себя методы onCreate, onStart и onDestroy.
• Если приложение не запущено, система запустит его для получения данных из другого приложения.
01:56:24 Работа с контентом-провайдерами
• В видео обсуждается работа с контентом-провайдерами, которые позволяют собирать статистику о пользователях приложения.
• Приводится пример использования библиотеки для сбора статистики о времени, проведенном пользователем в приложении.
01:59:09 Взаимодействие между приложениями
• Обсуждается взаимодействие между приложениями, когда одно приложение запрашивает данные у другого.
• Упоминается, что контент-провайдер может отдавать данные в одном потоке, но главный поток другого приложения может быть занят другими задачами.
• В видео рассказывается о библиотеке "Диск Ю Кэш", которая позволяет ограничить размер хранимых данных и удалять файлы, к которым обращались дольше всего.
• Приводится пример использования этой библиотеки для хранения изображений в ленте для Фейсбука.
02:09:02 Тестирование скорости работы с SD-картой
• В видео демонстрируется тест скорости чтения и записи на SD-карте, который показывает, что скорость работы с картой памяти увеличивается при последовательном чтении и записи файлов.
• Это может быть полезно при использовании многопоточности в приложениях.
02:10:43 Оптимизация работы с базой данных
• Обсуждение использования одного потока для ввода-вывода и операций с базой данных для повышения производительности.
• Упоминание о транзакциях и их использовании для ускорения работы с базой данных.
02:16:25 Работа с курсорами и оптимизация запросов
• Обсуждение использования метода "раукверри" для оптимизации запросов и предотвращения инъекций.
• Упоминание о возможности использования аргументов в запросах для ускорения работы.
02:21:02 Нормализация базы данных и оптимизация хранения данных
• Обсуждение отказа от нормализации базы данных для ускорения работы с хранилищем данных.
• Упоминание о возможности дублирования данных для повышения производительности.
02:26:04 Работа с памятью и курсорами
• Обсуждение использования класса "курсор виндоу" для оптимизации работы с памятью и курсорами.
• Упоминание о возможности подвисания приложения при работе с большими объемами данных.
02:27:39 Решение проблемы с подвисанием
• В видео обсуждается проблема подвисания при работе с базой данных, когда курсор достигает границы в 4 мегабайта.
• Предлагается решение: запрашивать только столбец id, а затем делать дополнительный запрос для получения остальных данных по id.
02:31:00 Альтернативные подходы
• Обсуждаются альтернативные подходы, такие как уменьшение размера одного элемента в строке или использование нереляционных баз данных.
• Упоминается, что поиск записи в базе данных по id является быстрой операцией, и это может быть использовано для решения проблемы подвисания.
• Также подчеркивается, что экулайт не является единственным решением для всех задач, и в некоторых случаях могут быть использованы другие подходы, такие как хранение данных в файлах или использование нереляционных баз данных.