Google Android - это несложно

Добро пожаловать на форум сайта startandroid.ru
Текущее время: 23 ноя 2017, 16:04

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 202 ]  На страницу 1, 2, 3, 4, 5 ... 11  След.
Автор Сообщение
 Заголовок сообщения: Урок 33. Хранение данных. Preferences.
СообщениеДобавлено: 14 ноя 2011, 03:00 
Администратор
Аватар пользователя

Зарегистрирован: 07 янв 2012, 11:32
Сообщений: 1355
Благодарил (а): 0 раз.
Поблагодарили: 72 раз.
В этом уроке:

- хранение данных с помощью Preferences

Click here to read this article!

_________________
Добро пожаловать на форум сайта StartAndroid
ИзображениеИзображение


Последний раз редактировалось damager82 01 май 2017, 16:38, всего редактировалось 5 раз(а).

Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Урок 33. Хранение данных. Preferences.
СообщениеДобавлено: 28 янв 2012, 10:50 

Зарегистрирован: 25 янв 2012, 02:25
Сообщений: 6
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Добрый день!

У меня есть две Activity.
Одна Рабочая, одна Настройки

Из Рабочей с помощью меню, захожу в Настройки.
Меняю, сохраняю, выхожу назад в Рабочую.

В моменты Рабочей onCreate, onStart(), onRestart()

Поставил Load()

Но настройки в этот момент еще не сохранились (Preferences старый - видимо еще не записался файл).

Как поступать? Писать задержку или есть какие то другие подходы?


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Урок 33. Хранение данных. Preferences.
СообщениеДобавлено: 28 янв 2012, 23:37 
Администратор
Аватар пользователя

Зарегистрирован: 07 янв 2012, 11:32
Сообщений: 1355
Благодарил (а): 0 раз.
Поблагодарили: 72 раз.
zavbak писал(а):
Но настройки в этот момент еще не сохранились (Preferences старый - видимо еще не записался файл).


Там все пишется в том же процессе. Должен сначала записать, потом продолжить работу.
Выложите здесь код сохранения и чтения. Может в них что не так?

_________________
Добро пожаловать на форум сайта StartAndroid
ИзображениеИзображение


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Урок 33. Хранение данных. Preferences.
СообщениеДобавлено: 11 фев 2012, 23:55 
Аватар пользователя

Зарегистрирован: 31 янв 2012, 18:00
Сообщений: 4
Благодарил (а): 0 раз.
Поблагодарили: 2 раз.
Цитата:
а метод saveText - в onDestroy


Это не удачное решение, данные следует сохранять в onPause, так как onPause будет обязательно вызван в приложении, а onDestroy не всегда, таким образом можно попросту потерять данные.

Цитата:
Because onPause() is the first of the three, once the activity is created, onPause() is the last method that's guaranteed to be called before the process can be killed—if the system must recover memory in an emergency, then onStop() and onDestroy() might not be called. Therefore, you should use onPause() to write crucial persistent data (such as user edits) to storage. However, you should be selective about what information must be retained during onPause(), because any blocking procedures in this method block the transition to the next activity and slow the user experience.

Methods that are marked "No" in the Killable column protect the process hosting the activity from being killed from the moment they are called. Thus, an activity is killable from the time onPause() returns to the time onResume() is called. It will not again be killable until onPause() is again called and returns.

http://developer.android.com/guide/topics/fundamentals/activities.html


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Урок 33. Хранение данных. Preferences.
СообщениеДобавлено: 12 фев 2012, 10:54 
Администратор
Аватар пользователя

Зарегистрирован: 07 янв 2012, 11:32
Сообщений: 1355
Благодарил (а): 0 раз.
Поблагодарили: 72 раз.
btx писал(а):
Это не удачное решение, данные следует сохранять в onPause, так как onPause будет обязательно вызван в приложении, а onDestroy не всегда, таким образом можно попросту потерять данные.


Да, имеет смысл в уроке уточнить, что я использую onDestroy только для примера.
Спасибо!

_________________
Добро пожаловать на форум сайта StartAndroid
ИзображениеИзображение


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Урок 33. Хранение данных. Preferences.
СообщениеДобавлено: 03 мар 2012, 12:00 

Зарегистрирован: 25 янв 2012, 02:25
Сообщений: 6
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Спасибо большее


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Урок 33. Хранение данных. Preferences.
СообщениеДобавлено: 06 май 2012, 12:15 
Аватар пользователя

Зарегистрирован: 05 май 2012, 10:42
Сообщений: 13
Откуда: Бобруйск
Благодарил (а): 0 раз.
Поблагодарили: 1 раз.
Подскажите пожалуйста. Можно ли как-то шифровать данные? Если я не хочу,чтобы кто-то мог зайти в папку и посмотретт,например логин и пароль,которые сохранились в файле.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Урок 33. Хранение данных. Preferences.
СообщениеДобавлено: 06 май 2012, 15:01 
Аватар пользователя

Зарегистрирован: 17 фев 2012, 21:23
Сообщений: 1339
Откуда: Мордор
Благодарил (а): 16 раз.
Поблагодарили: 161 раз.
Для этого есть javax.crypto.

_________________
R.id.team
Хватит таскать макулатуру на тренировку! Используй T Note.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Урок 33. Хранение данных. Preferences.
СообщениеДобавлено: 02 июн 2012, 13:39 

Зарегистрирован: 31 май 2012, 21:55
Сообщений: 8
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Как удалить данные из ключа?


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Урок 33. Хранение данных. Preferences.
СообщениеДобавлено: 04 июн 2012, 10:43 
Администратор
Аватар пользователя

Зарегистрирован: 07 янв 2012, 11:32
Сообщений: 1355
Благодарил (а): 0 раз.
Поблагодарили: 72 раз.
romanzi писал(а):
Как удалить данные из ключа?

Подробнизируйте вопрос. Не оч понятно

_________________
Добро пожаловать на форум сайта StartAndroid
ИзображениеИзображение


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Урок 33. Хранение данных. Preferences.
СообщениеДобавлено: 13 июл 2012, 21:08 

Зарегистрирован: 11 июн 2012, 15:42
Сообщений: 18
Благодарил (а): 2 раз.
Поблагодарили: 0 раз.
final String SAVED_TEXT = "saved_text";
final в этой строке означает что переменная глобальна?
в чём разница между этой строкой и такой же но без final?


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Урок 33. Хранение данных. Preferences.
СообщениеДобавлено: 16 июл 2012, 11:32 

Зарегистрирован: 14 май 2012, 16:18
Сообщений: 372
Благодарил (а): 0 раз.
Поблагодарили: 6 раз.
daiz123 писал(а):
final String SAVED_TEXT = "saved_text";
final в этой строке означает что переменная глобальна?
в чём разница между этой строкой и такой же но без final?

Это означает, что строка является константой и изменить её в процессе выполнения кода невозможно. В большинстве случаев её значение связывается (или даже подставляется) уже на этапе компиляции при формировании байт-кода виртуальной машины, т.е. осуществляет раннее связывание, что ускоряет работу с ней.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Урок 33. Хранение данных. Preferences.
СообщениеДобавлено: 19 июл 2012, 19:31 

Зарегистрирован: 16 июл 2012, 07:47
Сообщений: 235
Благодарил (а): 0 раз.
Поблагодарили: 25 раз.
Код: [ Загрузить ] [ Скрыть ]
Using Java Syntax Highlighting
  1. final String SAVED_TEXT = "saved_text";

final означает, что изменить значение переменной можно только в конструкторе (это присваивание будет вставлено в начало любого конструктора)
лучше
Код: [ Загрузить ] [ Скрыть ]
Using Java Syntax Highlighting
  1. static final String SAVED_TEXT = "saved_text";

Присваивание значаения произойдёт при загрузке класса и больше не изменится. Компилятор будет использовать константу вместо загрузки переменной.
Код: [ Загрузить ] [ Скрыть ]
Using Java Syntax Highlighting
  1. static final boolean USE_DB = false;
  2.  
  3. if(USE_DB) {
  4. // работа с базой данных
  5. } else {
  6. // работа без базой данных
  7. }
  8.  

Компилятор оставит только один вариант, но выдаст предупреждение - мёртвый код


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Урок 33. Хранение данных. Preferences.
СообщениеДобавлено: 19 июл 2012, 19:43 

Зарегистрирован: 16 июл 2012, 07:47
Сообщений: 235
Благодарил (а): 0 раз.
Поблагодарили: 25 раз.
Оказывается, можно сохранять Preference так:
Код: [ Загрузить ] [ Скрыть ]
Using XML Syntax Highlighting
  1. <PreferenceScreen
  2.  xmlns:android="http://schemas.android.com/apk/res/android">
  3.   <CheckBoxPreference
  4.    android:key="checkbox"
  5.    android:title="Checkbox Preference"
  6.    android:summary="Check it on, check it off" />
  7.   <RingtonePreference
  8.    android:key="ringtone"
  9.    android:title="Ringtone Preference"
  10.    android:showDefault="true"
  11.    android:showSilent="true"
  12.    android:summary="Pick a tone, any tone" />
  13. </PreferenceScreen>

Код: [ Загрузить ] [ Скрыть ]
Using Java Syntax Highlighting
  1. public class EditPreferences extends PreferenceActivity {
  2.   @Override
  3.   public void onCreate(Bundle savedInstanceState) {
  4.     super.onCreate(savedInstanceState);
  5.     addPreferencesFromResource(R.xml.preferences);
  6.   }
  7. }
(Mark L. Murphy, Beginning Android 2)
Пока не пробовал


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Урок 33. Хранение данных. Preferences.
СообщениеДобавлено: 20 июл 2012, 12:54 

Зарегистрирован: 20 июл 2012, 12:39
Сообщений: 8
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Доброго времени суток.
При отсутствии сохраненных Preferences, метод .getAll должен выбрасывать NullPointerException.
При оборачивании в try/catch

SharedPreferences sPref = getPreferences(MODE_PRIVATE);
try {
sPref.getAll();
} catch (NullPointerException e) {
Log.e("getAll", "Error");
}

приложение все равно падает. Подскажите в чем проблема.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Урок 33. Хранение данных. Preferences.
СообщениеДобавлено: 20 июл 2012, 13:13 
Аватар пользователя

Зарегистрирован: 17 фев 2012, 21:23
Сообщений: 1339
Откуда: Мордор
Благодарил (а): 16 раз.
Поблагодарили: 161 раз.
Ошибка возникает в другом месте. Посмотрите в логах на какой строке это происходит.

_________________
R.id.team
Хватит таскать макулатуру на тренировку! Используй T Note.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Урок 33. Хранение данных. Preferences.
СообщениеДобавлено: 20 июл 2012, 13:49 

Зарегистрирован: 20 июл 2012, 12:39
Сообщений: 8
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
Спасибо за оперативный ответ:)
Разобрался.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Урок 33. Хранение данных. Preferences.
СообщениеДобавлено: 14 авг 2012, 21:26 

Зарегистрирован: 30 июл 2012, 13:32
Сообщений: 25
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
вместо текста хочу сохранить значения массива (в массиве хранятся результаты), сохраняю вот так
Код: [ Загрузить ] [ Скрыть ]
Using Java Syntax Highlighting
  1. ed.putString(Save_Array, Arrays.toString(mas));

а как теперь ее загрузить? что в дальнейшим работать с результатами, я делал вот так: убрал добавившиеся символы с помощью substring (это запятые и прямоугольные скобки), затем создал строковый массив туда положил отредактированную строку с помощью split, и все что я сделал пошло на коту под хвост, обратно добавились прямоугольники, запятые и я в тупике не знаю что делать (( может не правильно сохраняю массив? помогите, дайте совет.


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Урок 33. Хранение данных. Preferences.
СообщениеДобавлено: 15 авг 2012, 00:02 
Аватар пользователя

Зарегистрирован: 26 июн 2012, 13:22
Сообщений: 3422
Откуда: UA
Благодарил (а): 11 раз.
Поблагодарили: 244 раз.
3Gern лучше кинь код, а то какой то велосипед ты описал.

_________________
R.id.team
Политика на форуме запрещена


Вернуться наверх
 Профиль  
 
 Заголовок сообщения: Re: Урок 33. Хранение данных. Preferences.
СообщениеДобавлено: 15 авг 2012, 10:32 

Зарегистрирован: 30 июл 2012, 13:32
Сообщений: 25
Благодарил (а): 0 раз.
Поблагодарили: 0 раз.
rezak90 писал(а):
3Gern лучше кинь код, а то какой то велосипед ты описал.

ну код такой же как в примере
Код: [ Загрузить ] [ Скрыть ]
Using Java Syntax Highlighting
  1. void saveArray(){
  2.         sPref = getPreferences(MODE_PRIVATE);
  3.         Editor ed = sPref.edit();
  4.         ed.putString(Save_Array, Arrays.toString(mas));
  5.         ed.commit();
  6.         }
  7.  
  8. void loadArray() {
  9.            sPref = getPreferences(MODE_PRIVATE);
  10.            String base = sPref.getString(Save_Array, "");
  11.            //дальше нужно содержимое Save_Array обратно вогнать в mas
  12.  


Вернуться наверх
 Профиль  
 
Показать сообщения за:  Сортировать по:  
Начать новую тему Ответить на тему  [ Сообщений: 202 ]  На страницу 1, 2, 3, 4, 5 ... 11  След.

Часовой пояс: UTC + 3 часа


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB