Форум программистов, компьютерный форум CyberForum.ru

Как лучше всего хранить данные для приложения? - Android

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.90
yotsi
0 / 0 / 0
Регистрация: 12.08.2014
Сообщений: 76
30.10.2014, 23:21     Как лучше всего хранить данные для приложения? #1
Допустим есть статический массив интов,или булов.Как его сохранять(onDestroy()) и подгружать(onCreate), наиболее минимальным кол-вом строк кода?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
30.10.2014, 23:21     Как лучше всего хранить данные для приложения?
Посмотрите здесь:

Кастомный шрифт для всего приложения android eclipse Android
Кастомный шрифт для всего приложения Android
Android Где лучше хранить информацию для приложения?
Где хранить данные проекта Android
Приложение "Рецепты", как хранить данные? Android
Android На чем лучше программировать приложения для Android?
Как хранить данные в интернете (хостинг, облако)? Android
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
CoolMind
411 / 394 / 65
Регистрация: 06.10.2012
Сообщений: 1,701
03.11.2014, 18:31     Как лучше всего хранить данные для приложения? #2
yotsi, не совсем понятна проблема. Сохранять нужно в память устройства, чтобы при следующем запуске программы восстанавливать из памяти? Если так, что лучше в отдельный файл копировать.
Если вы имеете в виду сохранение на период работы программы, то массив же у вас статический, а значит, постоянно в памяти.
Недавно заметил ещё одно интересное свойство активностей. У меня почему-то, если определить переменную как статическую внутри активности, то после завершения работы программы и запуска заново, она не сбрасывалась, а устанавливалась в то значение, которое было на момент выхода. Не знаю, случайно это, или это некий баг.
XRuZzz
Антикодер
605 / 506 / 25
Регистрация: 15.09.2012
Сообщений: 2,451
03.11.2014, 18:50     Как лучше всего хранить данные для приложения? #3
в хранении временных данных я проблемы не вижу, а обычно серьёзные проблемы возникают при не использовании реляционных СУБД для данных, которые сохраняет приложение. Использование реляционных СУБД позволяет избежать избыточности, сохранить целостность и т д
Rube
910 / 558 / 87
Регистрация: 13.02.2014
Сообщений: 2,066
03.11.2014, 19:56     Как лучше всего хранить данные для приложения? #4
Цитата Сообщение от CoolMind Посмотреть сообщение
У меня почему-то, если определить переменную как статическую внутри активности, то после завершения работы программы и запуска заново, она не сбрасывалась, а устанавливалась в то значение, которое было на момент выхода.
Ну так вроде это и есть фишка андроида, многозадачность называется.
CoolMind
411 / 394 / 65
Регистрация: 06.10.2012
Сообщений: 1,701
03.11.2014, 23:06     Как лучше всего хранить данные для приложения? #5
Rube, хах, а причём тут многозадачность? Вот, например, требуется мне при старте активности сбросить все переменные в null (или 0) и затем уже во время работы программы постоянно хранить значения. Я делаю их статическими внутри активности. Допустим, присваиваю некую строку в ходе выполнения. Выхожу из приложения, захожу заново. Ожидаю, что переменные снова null. А вот на тебе - не null.
Rube
910 / 558 / 87
Регистрация: 13.02.2014
Сообщений: 2,066
05.11.2014, 10:27     Как лучше всего хранить данные для приложения? #6
Цитата Сообщение от CoolMind Посмотреть сообщение
хах, а причём тут многозадачность?
Java
1
2
3
4
5
6
7
static String proba;
...
protected void onCreate(Bundle savedInstanceState) {
...
Log.d("", "proba: " + proba);
proba = "proba";
}
Первый запуск: proba: null
Второй запуск: proba: proba
Заходим Настройки-Приложения-Работающие-Процессы в кэше, удаляем наш процесс.
Третий запуск: proba: null
Не многозадачность ли?

Добавлено через 48 секунд
Цитата Сообщение от CoolMind Посмотреть сообщение
требуется мне при старте активности сбросить все переменные в null (или 0)
Ну так инициализируйте их при запуске.
CoolMind
411 / 394 / 65
Регистрация: 06.10.2012
Сообщений: 1,701
05.11.2014, 11:56     Как лучше всего хранить данные для приложения? #7
Rube, удалять процессы не пробовал, они иногда сами закрываются, правда. Если программа завершится нормальным способом, то будет не null, а "proba".
Цитата Сообщение от Rube Посмотреть сообщение
Ну так инициализируйте их при запуске.
Это, конечно, был бы вариант, но он породит другую проблему. Мне требуется сделать так, чтобы некая переменная хранила значение постоянно на период работы программы. Зашёл первый раз в активность, она должна быть null. Присвоил ей "proba". Вышел из активности, зашёл снова. Ничего обнулять теперь не надо, пусть она остаётся "proba". Зашёл третий раз в ту же активность (не выходя из приложения), что-то поделал, присвоил ей другое значение: "gotovo". Зашёл четвертый раз, пусть остаётся "gotovo", покажу какое-нибудь сообщение пользователю, что шеф, всё в порядке.
Перезашёл в программу, переменная снова null.
Так вот, такого поведения не удаётся достичь, если статическая переменная находится внутри активности.
YuraAAA
 Аватар для YuraAAA
1563 / 1305 / 269
Регистрация: 25.10.2009
Сообщений: 3,424
Записей в блоге: 2
05.11.2014, 12:55     Как лучше всего хранить данные для приложения? #8
CoolMind, сделайте через Application:

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public class TheApplication extends Application {
 
private static TheApplication instance;
public static String varible;
 
public static TheApplication getInstance() {
return instance;
}
 
@Override
public void onCreate() {
super.onCreate();
instance = this;
}
}
и вызов из любого места:

Java
1
TheApplication.getInstance().variable = "test";
только в манифест не забудьте TheApplication дописать как name в тег <application>
CoolMind
411 / 394 / 65
Регистрация: 06.10.2012
Сообщений: 1,701
05.11.2014, 15:00     Как лучше всего хранить данные для приложения? #9
YuraAAA, спасибо, интересный вариант. Я, правда, просто создал отдельный класс со статическими переменными и методами. Не знаю, насколько это правильно. Получается, что переменные глобальны для приложения. Ну и когда надо, например, что-то передать из одной активности в другую, тоже иной раз использую их, особенно, если закрывать активность при этом нельзя. Способ не очень правильный, но пока работает.
yotsi
0 / 0 / 0
Регистрация: 12.08.2014
Сообщений: 76
06.11.2014, 00:57  [ТС]     Как лучше всего хранить данные для приложения? #10
Вопрос был в том - пихать ли через sharedpreferenses или тупо в файл(и где его хранить?), сериализовать при этом в xml или нет.Или какие вообще способы есть.
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.11.2014, 08:00     Как лучше всего хранить данные для приложения?
Еще ссылки по теме:

Как лучше шифровать данные приложения? Android
Как лучше хранить небольшие (до 50 записей) и крупные до 600-1000 записей данные? Android
Где лучше хранить рисунки в приложении? Android
Android В чем хранить данные?
Как хранить VKAccessToken между перезапусками приложения Android

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Rube
910 / 558 / 87
Регистрация: 13.02.2014
Сообщений: 2,066
06.11.2014, 08:00     Как лучше всего хранить данные для приложения? #11
yotsi, извини, мы про тебя забыли.
Как я вижу:
Sharedpreferenses использовать если данных немного и/или они не однотипные. Например настройки приложения.
БД использовать когда данных много и они однотипные. Например список чего либо, телепрограмма и т.п. Удобен поиск в БД.
xml используется примерно как БД, но без поиска в данных. Тот же Sharedpreferenses хранит данные в xml.
Статические переменные живы во время жизни программы.
Вот более подробно здесь и здесь.
Yandex
Объявления
06.11.2014, 08:00     Как лучше всего хранить данные для приложения?
Ответ Создать тему
Опции темы

Текущее время: 07:56. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru