Модераторы: javastic
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Проектирование: хранение изменяющихся данных 
:(
    Опции темы
dimonomid
Дата 9.12.2011, 15:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 17.1.2006

Репутация: нет
Всего: нет



Всем здрасьте.

Проектирую свое первое приложение под Андроид, поэтому есть некоторые трудности из-за отсутствия опыта работы с этой платформой. Доки на developer.android.com (и не только оттуда) читал, свои идеи по реализации есть, надеюсь услышать совет от опытных товарищей.

Задача в целом: у нас есть некий девайс (в дальнейшем - Модуль), просто черная коробка без экранов и кнопочек, мое Андроид-приложение должно соединиться с Модулем по bluetooth и постоянно получать от Модуля данные: в среднем около 30 short значений раз в секунду. Нужно помнить все данные как минимум за последние 10 минут. Получается, 60 секунд * 10 минут * 30 параметров = 18000 значений. Каждое по два байта, итого 36000 байт.

При завершении приложения данные сохранять не обязательно, но по команде пользователя неплохо бы уметь сохранить текущие данные.

Какие вообще есть мысли: 

нужно сделать Service и ContentProvider. 
Service будет поддерживать bluetooth-соединение и будет сохранять данные каким-то образом, а ContentProvider будет должен обеспечить желающим Activity доступ к этим данным.

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

Есть сомнения: во-первых, действительно ли нужен этот ContentProvider? Вообще не в курсе, например, быстродействия. 
во-вторых, вообще не знаю, как именно хранить данные. Думаю про БД SQLite, но не слишком ли это медленно будет? Если раз в секунду добавлять/редактировать строку? 
Или, может, хранить последние 10 минут просто в оперативке, и, скажем, раз в минуту сохранять данные в БД. Если какая-то Activity захочет получить данные за любой период, она просто запросит их у ContentProvider, а тот в свою очередь будет смотреть, откуда их взять: может, можно достать из ОЗУ, а может, уже нужно запрашивать из БД.

Или, может, есть варианты получше?

Буду рад любым соображениям.
Спасибо за внимание
PM MAIL   Вверх
ivanovpv
Дата 16.12.2011, 13:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Варвар
**


Профиль
Группа: Участник
Сообщений: 639
Регистрация: 26.1.2005
Где: Москва

Репутация: 9
Всего: 28



ContentProvider нужен если вы собираетесь эти данные выносить за пределы приложения, если нет - то проще ограничиться тем что писать в SQLite. Для скорости можно создать in memory DB - то есть в оперативке, время от времени делая синк на диск.


--------------------
Aut viam inveniam aut faciam
PM MAIL Skype   Вверх
dimonomid
Дата 16.12.2011, 13:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 7
Регистрация: 17.1.2006

Репутация: нет
Всего: нет



Да, собираюсь выносить за пределы приложения: планируется, что впоследствии любой желающий сможет написать клиент для сервиса и получать от него данные.
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Android | Следующая тема »


 




[ Время генерации скрипта: 0.0962 ]   [ Использовано запросов: 20 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.