Урок 33. Хранение данных. Preferences.
Добавлено: 14 ноя 2011, 03:00
Добро пожаловать на форум сайта
http://forum.startandroid.ru/
Там все пишется в том же процессе. Должен сначала записать, потом продолжить работу.zavbak писал(а): Но настройки в этот момент еще не сохранились (Preferences старый - видимо еще не записался файл).
Это не удачное решение, данные следует сохранять в onPause, так как onPause будет обязательно вызван в приложении, а onDestroy не всегда, таким образом можно попросту потерять данные.а метод saveText - в 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/topi ... ities.html
Да, имеет смысл в уроке уточнить, что я использую onDestroy только для примера.btx писал(а): Это не удачное решение, данные следует сохранять в onPause, так как onPause будет обязательно вызван в приложении, а onDestroy не всегда, таким образом можно попросту потерять данные.
Подробнизируйте вопрос. Не оч понятноromanzi писал(а):Как удалить данные из ключа?
Это означает, что строка является константой и изменить её в процессе выполнения кода невозможно. В большинстве случаев её значение связывается (или даже подставляется) уже на этапе компиляции при формировании байт-кода виртуальной машины, т.е. осуществляет раннее связывание, что ускоряет работу с ней.daiz123 писал(а):final String SAVED_TEXT = "saved_text";
final в этой строке означает что переменная глобальна?
в чём разница между этой строкой и такой же но без final?
Код: Выделить всё
final String SAVED_TEXT = "saved_text";
Код: Выделить всё
static final String SAVED_TEXT = "saved_text";
Код: Выделить всё
static final boolean USE_DB = false;
if(USE_DB) {
// работа с базой данных
} else {
// работа без базой данных
}
Код: Выделить всё
<PreferenceScreen
xmlns:android="http://schemas.android.com/apk/res/android">
<CheckBoxPreference
android:key="checkbox"
android:title="Checkbox Preference"
android:summary="Check it on, check it off" />
<RingtonePreference
android:key="ringtone"
android:title="Ringtone Preference"
android:showDefault="true"
android:showSilent="true"
android:summary="Pick a tone, any tone" />
</PreferenceScreen>
Код: Выделить всё
public class EditPreferences extends PreferenceActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.preferences);
}
}
Код: Выделить всё
ed.putString(Save_Array, Arrays.toString(mas));
ну код такой же как в примереrezak90 писал(а):3Gern лучше кинь код, а то какой то велосипед ты описал.
Код: Выделить всё
void saveArray(){
sPref = getPreferences(MODE_PRIVATE);
Editor ed = sPref.edit();
ed.putString(Save_Array, Arrays.toString(mas));
ed.commit();
}
void loadArray() {
sPref = getPreferences(MODE_PRIVATE);
String base = sPref.getString(Save_Array, "");
//дальше нужно содержимое Save_Array обратно вогнать в mas