Урок 33. Хранение данных. Preferences.

Обсуждение уроков
xr0m
Сообщения: 131
Зарегистрирован: 06 апр 2013, 14:01

Re: Урок 33. Хранение данных. Preferences.

Сообщение xr0m » 06 май 2013, 17:17

БД работает намного быстрее с большими массивами данных, легко расширяется, плюс все данные типизированны. БД так же имеет проверку на целостность данных.
С Preference проще работать, важный данные лучше в нем не хранить.

Кстати, подключение к БД по времени дольше, чем открытые файла на чтение?
Последний раз редактировалось xr0m 07 май 2013, 01:21, всего редактировалось 1 раз.

Аватара пользователя
Mikhail_dev
Сообщения: 2386
Зарегистрирован: 09 янв 2012, 14:45
Откуда: Самара

Re: Урок 33. Хранение данных. Preferences.

Сообщение Mikhail_dev » 06 май 2013, 20:21

Я не пойму, зачем использовать передачу данных между активностями, если есть Bundle? Запись настроек - это операция записи на носитель информации, она слишком дорогая в такой ситуации.

xr0m
Сообщения: 131
Зарегистрирован: 06 апр 2013, 14:01

Re: Урок 33. Хранение данных. Preferences.

Сообщение xr0m » 07 май 2013, 01:12

Хм.. верно, не совсем точно выразился. Имел ввиду про PreferenceActivity, который по умолчанию сохраняет настройки, при изменении.

Подредактирую.

WebPlayer
Сообщения: 6
Зарегистрирован: 05 июл 2013, 18:10

Re: Урок 33. Хранение данных. Preferences.

Сообщение WebPlayer » 05 июл 2013, 18:23

Здравтсвуйте.

Preferences используются для хранения настроек.
И если пользователь удалит прилжение, то настройки тоже удалятся.

Пример:
Есть приложение, которое авторизуется на сервере по token (случайно сгенерированная строка при первом запуске приложения)
Пользователю при первом запуске дается определенное количество бесплантых монеток(вся информация хранится на сервере), которые он может тратить. Как потратил нужно покупать.
Но пользователь может переустановить приложение(token сохраненный в Preferences при этом удаляется) и получить снова бесплатные монетки.

Вопрос: куда сохранять token что бы он оставатся между переустановками приложения?
Есть-ли такое место в android?

Аватара пользователя
anber
Сообщения: 584
Зарегистрирован: 10 июн 2013, 15:05
Откуда: UA

Re: Урок 33. Хранение данных. Preferences.

Сообщение anber » 05 июл 2013, 18:38

WebPlayer писал(а):Здравтсвуйте.

Preferences используются для хранения настроек.
И если пользователь удалит прилжение, то настройки тоже удалятся.

Пример:
Есть приложение, которое авторизуется на сервере по token (случайно сгенерированная строка при первом запуске приложения)
Пользователю при первом запуске дается определенное количество бесплантых монеток(вся информация хранится на сервере), которые он может тратить. Как потратил нужно покупать.
Но пользователь может переустановить приложение(token сохраненный в Preferences при этом удаляется) и получить снова бесплатные монетки.

Вопрос: куда сохранять token что бы он оставатся между переустановками приложения?
Есть-ли такое место в android?
При обновлении данные не удалятся. Если пользователь удалит приложение значит он не хочет чтобы от этого приложения оставались огрызки. Правильно решение - хранить данные между установками на сервере.
Вообще можно сохранить данные на карте памяти, там они не удаляться, но специально отведенного места под это нет, а гадить на карту памяти нехорошо. В принципе можно попросить пользователя указать путь где на карте памяти хранить token. Смотри http://developer.android.com/training/b ... nalStorage
Более не менее из публичных директорий для твоих целей подходит DIRECTORY_DOWNLOADS.
Личные сообщения с просьбой ответить на форуме или написать программу я просто удаляю, если я в хорошем настроении. Если в плохом добавляю автора в черный список. По любым другим вопросам feel free to write to me.

Аватара пользователя
Mikhail_dev
Сообщения: 2386
Зарегистрирован: 09 янв 2012, 14:45
Откуда: Самара

Re: Урок 33. Хранение данных. Preferences.

Сообщение Mikhail_dev » 06 июл 2013, 19:29

Абсолютно верное говорит anber.
Пользователю при первом запуске дается определенное количество бесплантых монеток(вся информация хранится на сервере), которые он может тратить. Как потратил нужно покупать.
В чем проблема? Давайте монеты ему только тогда, когда информация будет получена с сервера о нём.

WebPlayer
Сообщения: 6
Зарегистрирован: 05 июл 2013, 18:10

Re: Урок 33. Хранение данных. Preferences.

Сообщение WebPlayer » 07 июл 2013, 11:46

anber писал(а): При обновлении данные не удалятся. Если пользователь удалит приложение значит он не хочет чтобы от этого приложения оставались огрызки.
Я хочу. Необходимо не давать второй раз бесплатные монеты.
anber писал(а): Правильно решение - хранить данные между установками на сервере.
Да, верно, но чтобы получить эти данные нужен идентификатор пользователя, который хранится на телефоне (token, например, который должен быть одним и тем же между перестановками приложения. Что бы однозначно определить одного и того же пользователя)
anber писал(а): Вообще можно сохранить данные на карте памяти, там они не удаляться, но специально отведенного места под это нет, а гадить на карту памяти нехорошо. В принципе можно попросить пользователя указать путь где на карте памяти хранить token. Смотри http://developer.android.com/training/b ... nalStorage
Более не менее из публичных директорий для твоих целей подходит DIRECTORY_DOWNLOADS.
С карты памяти можно все очень легко удалить.
no-- писал(а): В чем проблема? Давайте монеты ему только тогда, когда информация будет получена с сервера о нём.
Собственно в этом и проблема: однозначно получить инфу пользователя с сервера по токену, который должен хранится на устройстве и не удалятся при удалении приложения. Иначе у пользователя будет новая регистрация с новыми бесплантными монетами.
Количество монет пользователя хранится на сервере и все списания и начисления монет тоже на сервере.

Можно конечно просить пользователей регистрироваться при запуске прилежения, но это лишний шаг, который многие не захотят делать.

=bor=
Сообщения: 267
Зарегистрирован: 21 мар 2013, 12:26

Re: Урок 33. Хранение данных. Preferences.

Сообщение =bor= » 07 июл 2013, 12:10

WebPlayer писал(а):Собственно в этом и проблема: однозначно получить инфу пользователя с сервера по токену, который должен хранится на устройстве и не удалятся при удалении приложения. Иначе у пользователя будет новая регистрация с новыми бесплантными монетами.
Вы себе сами сужаете поле деятельности. Почему обязательно так это организовывать? Вам ведь главное однозначно идентифицировать пользователя. Сгенерите для него ID, и потом даже если он переустановит ваше приложение, ID будет тот же и вы его опознаете.
WebPlayer писал(а):Можно конечно просить пользователей регистрироваться при запуске прилежения, но это лишний шаг, который многие не захотят делать.
Совсем не лишнее, кмк, если за регистрацию они получат какую-то плюшку. ;)

Аватара пользователя
anber
Сообщения: 584
Зарегистрирован: 10 июн 2013, 15:05
Откуда: UA

Re: Урок 33. Хранение данных. Preferences.

Сообщение anber » 07 июл 2013, 15:10

WebPlayer писал(а):
anber писал(а): При обновлении данные не удалятся. Если пользователь удалит приложение значит он не хочет чтобы от этого приложения оставались огрызки.
Я хочу. Необходимо не давать второй раз бесплатные монеты.
anber писал(а): Правильно решение - хранить данные между установками на сервере.
Да, верно, но чтобы получить эти данные нужен идентификатор пользователя, который хранится на телефоне (token, например, который должен быть одним и тем же между перестановками приложения. Что бы однозначно определить одного и того же пользователя)
anber писал(а): Вообще можно сохранить данные на карте памяти, там они не удаляться, но специально отведенного места под это нет, а гадить на карту памяти нехорошо. В принципе можно попросить пользователя указать путь где на карте памяти хранить token. Смотри http://developer.android.com/training/b ... nalStorage
Более не менее из публичных директорий для твоих целей подходит DIRECTORY_DOWNLOADS.
С карты памяти можно все очень легко удалить.
no-- писал(а): В чем проблема? Давайте монеты ему только тогда, когда информация будет получена с сервера о нём.
Собственно в этом и проблема: однозначно получить инфу пользователя с сервера по токену, который должен хранится на устройстве и не удалятся при удалении приложения. Иначе у пользователя будет новая регистрация с новыми бесплантными монетами.
Количество монет пользователя хранится на сервере и все списания и начисления монет тоже на сервере.

Можно конечно просить пользователей регистрироваться при запуске прилежения, но это лишний шаг, который многие не захотят делать.
Можно использовать Facebook/VK/twitter аккаунт
Личные сообщения с просьбой ответить на форуме или написать программу я просто удаляю, если я в хорошем настроении. Если в плохом добавляю автора в черный список. По любым другим вопросам feel free to write to me.

Аватара пользователя
brulik67
Сообщения: 16
Зарегистрирован: 17 мар 2013, 12:18

Re: Урок 33. Хранение данных. Preferences.

Сообщение brulik67 » 09 июл 2013, 13:42

у меня если стоит на девайсе режим энергосбережения, то когда экран тухнет, объекты из памяти удаляются я так понял, и данные в приложении приходится набивать заново. Можно как-то сделать чтоб конкретный объект не умирал при выключении экрана??

Аватара пользователя
anber
Сообщения: 584
Зарегистрирован: 10 июн 2013, 15:05
Откуда: UA

Re: Урок 33. Хранение данных. Preferences.

Сообщение anber » 09 июл 2013, 13:51

brulik67 писал(а):у меня если стоит на девайсе режим энергосбережения, то когда экран тухнет, объекты из памяти удаляются я так понял, и данные в приложении приходится набивать заново. Можно как-то сделать чтоб конкретный объект не умирал при выключении экрана??
Обычно когда экран тухнет объекты из памяти не удалятся. Если приложение остановить(зайти в список приложений и нажать остановить), то да объекты которые не сохранены в Preferences удалятся. Более того они обычно не удаляются при нажатии кнопки home и последующем разворачивании.
То что вам приходится набивать данные заново это значит не то что объекты удаляются, а то что они неправильно используются.
К примеру при создании Activity выполняется метод onCreate, при сворачивании/тушении экрана - onPause, и обратно при восстановлении - onResume.
Личные сообщения с просьбой ответить на форуме или написать программу я просто удаляю, если я в хорошем настроении. Если в плохом добавляю автора в черный список. По любым другим вопросам feel free to write to me.

Аватара пользователя
brulik67
Сообщения: 16
Зарегистрирован: 17 мар 2013, 12:18

Re: Урок 33. Хранение данных. Preferences.

Сообщение brulik67 » 10 июл 2013, 14:09

не знаю где спросить, спрошу тут. Версия кода и программы указывается в манифесте я так понял, а как мне получить эти данные из кода?

Аватара пользователя
anber
Сообщения: 584
Зарегистрирован: 10 июн 2013, 15:05
Откуда: UA

Re: Урок 33. Хранение данных. Preferences.

Сообщение anber » 10 июл 2013, 14:19

brulik67 писал(а):не знаю где спросить, спрошу тут. Версия кода и программы указывается в манифесте я так понял, а как мне получить эти данные из кода?

Код: Выделить всё

PackageInfo pInfo = getPackageManager().getPackageInfo(getPackageName(), 0);
pInfo.versionName;
pInfo.versionCode;
ЗЫ, первая ссылка http://lmgtfy.com/?q=android+get+applic ... m+manifest
Личные сообщения с просьбой ответить на форуме или написать программу я просто удаляю, если я в хорошем настроении. Если в плохом добавляю автора в черный список. По любым другим вопросам feel free to write to me.

tytryn
Сообщения: 7
Зарегистрирован: 23 мар 2013, 15:01

Re: Урок 33. Хранение данных. Preferences.

Сообщение tytryn » 23 авг 2013, 14:51

Здравствуйте. Я организовал скачивание файла с интернета на sd карту.
Подскажите как можно не скачивая файл проверить его дату, размер и тд.
Хочу для приложения сделать уведомления, что-то типа есть новый файл можно загружать или обновить.

Аватара пользователя
anber
Сообщения: 584
Зарегистрирован: 10 июн 2013, 15:05
Откуда: UA

Re: Урок 33. Хранение данных. Preferences.

Сообщение anber » 27 авг 2013, 14:57

tytryn писал(а):Здравствуйте. Я организовал скачивание файла с интернета на sd карту.
Подскажите как можно не скачивая файл проверить его дату, размер и тд.
Хочу для приложения сделать уведомления, что-то типа есть новый файл можно загружать или обновить.
что за файл, откуда скачивать?
Личные сообщения с просьбой ответить на форуме или написать программу я просто удаляю, если я в хорошем настроении. Если в плохом добавляю автора в черный список. По любым другим вопросам feel free to write to me.

Аватара пользователя
Isaev
Сообщения: 145
Зарегистрирован: 03 сен 2013, 09:39
Откуда: Германия
Контактная информация:

Re: Урок 33. Хранение данных. Preferences.

Сообщение Isaev » 15 окт 2013, 14:24

Preferences-данные сохраняются в файлы и вы можете посмотреть их. Для этого в Eclipse откройте меню Window > Show View > Other и выберите Android > File Explorer. Отобразилась файловая система эмулятора.
а в IDEA есть что-то похожее, может кто подсказать?

Аватара пользователя
trew
Сообщения: 450
Зарегистрирован: 28 сен 2013, 17:34

Re: Урок 33. Хранение данных. Preferences.

Сообщение trew » 15 окт 2013, 15:24

Isaev писал(а):
Preferences-данные сохраняются в файлы и вы можете посмотреть их. Для этого в Eclipse откройте меню Window > Show View > Other и выберите Android > File Explorer. Отобразилась файловая система эмулятора.
а в IDEA есть что-то похожее, может кто подсказать?
IntelliJ не имеет File Explorer, но есть варианты:
http://stackoverflow.com/questions/4866 ... n-intellij
Когда выкладываете код на форум - код оформляйте. Редактор - поищите слова Geshi Syntax -Java. (или xml)
Свои сообщения можно редактировать - кнопка edit.

Аватара пользователя
Isaev
Сообщения: 145
Зарегистрирован: 03 сен 2013, 09:39
Откуда: Германия
Контактная информация:

Re: Урок 33. Хранение данных. Preferences.

Сообщение Isaev » 16 окт 2013, 09:17

trew, благодарю! Там в DDMS есть как раз вкладочка File Explorer. В общем можно сказать, что он там есть, функционала вполне хватает)

Ещё вопросик:
Константа MODE_PRIVATE используется для настройки доступа и означает, что после сохранения, данные будут видны только этому приложению
Почему при этом режиме мы всё равно видим файл в File Explorer, если он должен быть виден "только этому приложению"?

Аватара пользователя
Foenix
Сообщения: 4201
Зарегистрирован: 20 окт 2012, 12:01

Re: Урок 33. Хранение данных. Preferences.

Сообщение Foenix » 16 окт 2013, 11:43

может,у тебя на телефоне рут? тогда все будешь видеть
R.id.team

NullPointerException - что делать???
viewtopic.php?f=33&t=3899&p=28952#p28952
Где моя ошибка?
viewtopic.php?f=60&t=3198

Аватара пользователя
Isaev
Сообщения: 145
Зарегистрирован: 03 сен 2013, 09:39
Откуда: Германия
Контактная информация:

Re: Урок 33. Хранение данных. Preferences.

Сообщение Isaev » 16 окт 2013, 12:13

Foenix, ну по статье его видно у всех, не только у меня
я почему-то думал с такими правими он ни откуда виден не будет, только приложение будет иметь к нему доступ

Ответить