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

Программирование Android

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 10, средняя оценка - 4.90
yotsi
0 / 0 / 0
Регистрация: 12.08.2014
Сообщений: 92
#1

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

30.10.2014, 23:21. Просмотров 1566. Ответов 10
Метки нет (Все метки)

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

Где лучше хранить информацию для приложения? - Программирование Android
Суть вот в чем, есть много программ типа справочник. Мне интересно как реализовано второе активити. В первом понятно, список. А во втором...

Как лучше хранить небольшие (до 50 записей) и крупные до 600-1000 записей данные? - Программирование Android
Разрабатываю первое собственное приложение. Стою перед архитектурным выбором, и не знаю что использовать. У более опытных ребят хочу...

Как лучше шифровать данные приложения? - Программирование Android
Не знаю в какой ветке писать, но раз уж приложения так легко ломаются... У меня есть данные в небольшом текстовом файле. Которые я не...

Как хранить VKAccessToken между перезапусками приложения - Программирование Android
Доброго дня. Подскажите пожалуйста как сделать так что бы приложение не запрашивало при каждом запуске права в VK-аккаунте, т.е. что бы...

Кастомный шрифт для всего приложения - Программирование Android
подскажите лучший способ использовать кастомный шрифт для всего приложения.

Как лучше всего организовать движение textView вниз? - Программирование Android
Среда разработки - Android Studio. Как лучше всего организовать движение textView вниз? Через отдельный поток вызывать хэндлер и там...

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
CoolMind
419 / 402 / 65
Регистрация: 06.10.2012
Сообщений: 1,727
03.11.2014, 18:31 #2
yotsi, не совсем понятна проблема. Сохранять нужно в память устройства, чтобы при следующем запуске программы восстанавливать из памяти? Если так, что лучше в отдельный файл копировать.
Если вы имеете в виду сохранение на период работы программы, то массив же у вас статический, а значит, постоянно в памяти.
Недавно заметил ещё одно интересное свойство активностей. У меня почему-то, если определить переменную как статическую внутри активности, то после завершения работы программы и запуска заново, она не сбрасывалась, а устанавливалась в то значение, которое было на момент выхода. Не знаю, случайно это, или это некий баг.
0
XRuZzz
Антикодер
676 / 577 / 28
Регистрация: 15.09.2012
Сообщений: 2,523
03.11.2014, 18:50 #3
в хранении временных данных я проблемы не вижу, а обычно серьёзные проблемы возникают при не использовании реляционных СУБД для данных, которые сохраняет приложение. Использование реляционных СУБД позволяет избежать избыточности, сохранить целостность и т д
0
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,071
03.11.2014, 19:56 #4
Цитата Сообщение от CoolMind Посмотреть сообщение
У меня почему-то, если определить переменную как статическую внутри активности, то после завершения работы программы и запуска заново, она не сбрасывалась, а устанавливалась в то значение, которое было на момент выхода.
Ну так вроде это и есть фишка андроида, многозадачность называется.
1
CoolMind
419 / 402 / 65
Регистрация: 06.10.2012
Сообщений: 1,727
03.11.2014, 23:06 #5
Rube, хах, а причём тут многозадачность? Вот, например, требуется мне при старте активности сбросить все переменные в null (или 0) и затем уже во время работы программы постоянно хранить значения. Я делаю их статическими внутри активности. Допустим, присваиваю некую строку в ходе выполнения. Выхожу из приложения, захожу заново. Ожидаю, что переменные снова null. А вот на тебе - не null.
0
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,071
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)
Ну так инициализируйте их при запуске.
1
CoolMind
419 / 402 / 65
Регистрация: 06.10.2012
Сообщений: 1,727
05.11.2014, 11:56 #7
Rube, удалять процессы не пробовал, они иногда сами закрываются, правда. Если программа завершится нормальным способом, то будет не null, а "proba".
Цитата Сообщение от Rube Посмотреть сообщение
Ну так инициализируйте их при запуске.
Это, конечно, был бы вариант, но он породит другую проблему. Мне требуется сделать так, чтобы некая переменная хранила значение постоянно на период работы программы. Зашёл первый раз в активность, она должна быть null. Присвоил ей "proba". Вышел из активности, зашёл снова. Ничего обнулять теперь не надо, пусть она остаётся "proba". Зашёл третий раз в ту же активность (не выходя из приложения), что-то поделал, присвоил ей другое значение: "gotovo". Зашёл четвертый раз, пусть остаётся "gotovo", покажу какое-нибудь сообщение пользователю, что шеф, всё в порядке.
Перезашёл в программу, переменная снова null.
Так вот, такого поведения не удаётся достичь, если статическая переменная находится внутри активности.
0
YuraAAA
1574 / 1316 / 271
Регистрация: 25.10.2009
Сообщений: 3,438
Записей в блоге: 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>
1
CoolMind
419 / 402 / 65
Регистрация: 06.10.2012
Сообщений: 1,727
05.11.2014, 15:00 #9
YuraAAA, спасибо, интересный вариант. Я, правда, просто создал отдельный класс со статическими переменными и методами. Не знаю, насколько это правильно. Получается, что переменные глобальны для приложения. Ну и когда надо, например, что-то передать из одной активности в другую, тоже иной раз использую их, особенно, если закрывать активность при этом нельзя. Способ не очень правильный, но пока работает.
0
yotsi
0 / 0 / 0
Регистрация: 12.08.2014
Сообщений: 92
06.11.2014, 00:57  [ТС] #10
Вопрос был в том - пихать ли через sharedpreferenses или тупо в файл(и где его хранить?), сериализовать при этом в xml или нет.Или какие вообще способы есть.
0
Rube
911 / 559 / 88
Регистрация: 13.02.2014
Сообщений: 2,071
06.11.2014, 08:00 #11
yotsi, извини, мы про тебя забыли.
Как я вижу:
Sharedpreferenses использовать если данных немного и/или они не однотипные. Например настройки приложения.
БД использовать когда данных много и они однотипные. Например список чего либо, телепрограмма и т.п. Удобен поиск в БД.
xml используется примерно как БД, но без поиска в данных. Тот же Sharedpreferenses хранит данные в xml.
Статические переменные живы во время жизни программы.
Вот более подробно здесь и здесь.
0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
06.11.2014, 08:00
Привет! Вот еще темы с ответами:

Как хранить данные в интернете (хостинг, облако)? - Программирование Android
Здравствуйте , уважаемые программисты! Не могли бы вы мне помочь? Как хранить данные андроид приложений в интернете? Что лучше...

Кастомный шрифт для всего приложения android eclipse - Программирование Android
Как можно применить один шрифт для всего приложения полностью, включая не только кнопки и текствьюшки, но и ЭкшнБары, Табы, Листы и тд.? ...

На чем лучше программировать приложения для Android? - Программирование Android
Всем привет подскажите в каком лучще и проще ? программировать приложения для Android ? и какие книги видеоуроки посоветуете?

Где лучше хранить рисунки в приложении? - Программирование Android
Доброго дня. В моём приложении будет пакет рисунков. Куда их лучше положить, в res\drawable или в assets, с прицелом в дальнейшем на то...


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

Или воспользуйтесь поиском по форуму:
Yandex
Объявления
06.11.2014, 08:00
Ответ Создать тему
Опции темы

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