Компоненты App Inventor – Storage.

Компоненты App Inventor - StorageРано или поздно, каждый создатель приложений сталкивается с необходимостью сохранить данные. Причем, скорее рано. И в App Inventor для этого есть специальные компоненты – Storage.
Кстати, не заметили, слово «storage» (хранилище) очень близко и по звучанию и по смыслу с русским «сторож»? Забавно! И какими путями добрело это слово до разных языков? Ведь, наверняка, источник был один. Что интересно, «сторож», «страж» присутствуют в сходных вариантах во всех славянских языках. А маленькое исследование в Google-переводчике показало, что похожее слово есть еще в ирландском – «storas» (склад).
Впрочем, у нас тут не этимологические посиделки, засим вернемся к App Inventor.


Здесь присутствуют четыре компонента: File, FusionTablesControl, TinyDB, TinyWebDB. Подробно я опишу первый и третий. Но сначала, совсем коротко, о втором и четвертом компонентах.
FusionTablesControl – это компонент, который позволяет пользоваться для данных таблицами. Это действительно удобно. Однако есть маленькое «но» — это не таблицы, которые создаются на вашем устройстве, это таблицы Google Fusion Tables, которые расположены на сервисах Гугла и доступны по специальному API. Поскольку в рамках данной серии статей по App Inventor я не ставлю целью обучение работы с API Google, то и подробного рассмотрения этого компонента я здесь приводить не буду.
То же самое касается и TinyWebDB – веб-сервиса для хранения данных.
Возможно, в будущем я и расскажу подробно о работе с этими компонентами, но, вообще, я думаю, что если ваш уровень подготовки позволяет работать с подобными инструментами, то вы и без моей помощи разберетесь.
А сейчас к тому, что попроще и позволит хранить не слишком большие объемы данных непосредственно в гаджете.
File
Компонент App Inventor - FileЭто простой, но полезный компонент App Inventor, который позволяет работать с текстовыми файлами непосредственно на android-устройстве. Его можно использовать для записи или чтения текстовых файлов. По умолчанию он пишет файл в папку, связанную с App Inventor – обычно /SDCard / AppInventor /.  Если указание пути начинается с «/», то путь создается по отношению к внешней карте памяти. Например, «/myFile.txt» указывает путь /sdcard/myFile.txt.
Свойства у компонента отсутствуют
События
GotText (текст)
Событие, показывающее, что содержимое из файла было прочитано.
Команды
AppendToFile (текст, имя файла)
Добавляет текст в конец файла. Создает файл, если он еще не существует. Дополнительную информацию по созданию файла смотрите в  SAVEFILE.
Delete (имя файла)
Удаляет файл из хранилища. Обращайте внимание на правильное указание пути к файлу, о чем было написано выше.
ReadFrom (имя файла)
Читает текст из файла в хранилище.
SaveFile (текст, имя файла)
Сохраняет файл. Если имя файла начинается с косой черты (/) файл записывается в SDCard (например, при указании пути «/myFile.txt» будет записан файл на «/sdcard/myFile.txt»). Если имя файла не начинается с косой черты, оно будет написано в отдельный каталог данных программы, где он не будет доступен для других программ на телефоне. Существует специальное исключение для AI Companion, где эти файлы записываются в «/ SDCard / AppInventor /» для облегчения отладки. Обратите внимание, что этот блок будет перезаписывать файл, если он уже существует.

TinyDB
Компонент App Inventor - TinyDBЭто невидимый компонент App Inventor, который хранит данные непосредственно в устройстве.
Приложения, созданные с помощью App Inventor инициализируются каждый раз заново, когда они выполняются. Это означает, что если приложение устанавливает значение переменной, а затем пользователь выходит из приложения, значение этой переменной теряется. В отличие от этого, TinyDB является стойким хранилище данных для приложений. Данные, хранящиеся в TinyDB будут доступны каждый раз, когда приложение запускается.
Каждая переменная сохраняется под собственным именем.
Каждое приложение имеет собственное хранилище данных. Но отсюда же следует. Что для каждого приложения имеется только одно хранилище. То есть, если сохранить переменную под именем «X», то в данном приложении будет только одна переменная под этим именем, но она будет недоступна для других приложений.
Но здесь надо сделать важное замечание: при разработке с использованием AI Companion, хранилище будет единым для всех разрабатываемых приложений. Так что, созданная в одном приложении переменная всплывет под тем же именем в другом.
Свойств данный компонент не имеет
Событий тоже
Команды
ClearAll ()
Очистить все хранилище данных в TinyDB.
ClearTag (имя переменной)
Очистите запись с данным тегом.
any GetTags ()
Возвращает список всех тегов в TinyDB.
any GetValue (имя переменной, указанное значение)
Получить значение, хранящееся в данной переменной. Если нет такой переменной, присвоить указанное значение.
StoreValue (имя переменной, любой valueToStore)
Сохранить данные в переменной с определенным именем. При выключении приложения, в том числе и при выключении устройства, переменная будет сохранена.
Этих двух рассмотренных компонентов App Inventor будет достаточно для создания несложных мобильных приложений. Если же требуется использовать хранилища для доступа с нескольких устройств, то не избежать использования двух первых компонентов.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

  1. Artur:

    Здравствуйте! Помогите дилетанту!)) Не могу разобраться с tinydb, к сожалению у вас на сайте не предусмотрено загрузки фото, поэтому скрин этот http://nikah-turban.ru/wp-content/uploads/2016/04/Безымянный.png . Вопрос в том что я не могу при нажатии на кнопку скрывать панель с надписью, а при повторном раскрывать. Точнее скрыть получается, а вот уже когда нажимаю повторно он так и остается спрятанным. В чем может быть ошибка?

  2. Алексей Самсонов:

    Артур, здравствуйте!
    Думаю, вам просто необходимо ввести проверку состояния панели с надписью: если она видна, то при нажатии кнопки делаем невидимой и наоборот. Удачи!

  3. Artur:

    Спасибо, вы натолкнули на другую мысль. Оказывается он не понимает двойную логику «если, то» и «если, то», а вот «если, то, иначе» это уже он кубаторит.))