5. Дополнительные возможности

Сохранение состояния

При запуске приложения иногда требуется загрузка настроек, сделанных во время предыдущей работы программы. Самым простым способом хранения настроек является хранение данных в виде xmlфайлов. Файл xmlможет располагаться в папке res/values/. Рассмотрим пример чтения настроек-ресурсов из файла.

 

Содержимое файла res/values/settings.xml

<?xml version="1.0" encoding="utf-8"?>

<resources>

          <string name="abc">Hello world</string>

                   <item format="integer" name="n" type="integer">12345</item>

</resources>

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

public void onCreate(Bundle savedInstanceState) {

          super.onCreate(savedInstanceState);

          setContentView(R.layout.activity_save_xml);        

          EditText loginEdit = (EditText)findViewById(R.id.editText1);

          int i;   

          i=getResources().getInteger(R.integer.n);

          loginEdit.setText(String.valueOf(i));

}

Текстовое поле loginEditзагружает из файла xmlзначение элемента nпри помощи функции getResources(). Таким образом, настройки задаются на стадии компиляции программы и могут быть считаны приложением во время его работы.

Настройки могут также создаваться во время работы приложения и быть доступными для изменений. В таком случае доступ к настройкам должен быть только из программы (а не на стадии компиляции через редактор). Рассмотримследующийпример.

public void onCreate(Bundle savedInstanceState) {

          super.onCreate(savedInstanceState);

          setContentView(R.layout.activity_save_xml);

          EditText loginEdit = (EditText)findViewById(R.id.editText1);

// загружаемнастройки

          SharedPreferences settings=getPreferences(0);

          String login=settings.getString(“Login”,””);

// вставляем в текстовое поле загруженные настройки

          loginEdit.setText(login);

}

@Override

protected void onStop() {

          super.onStop();   

          EditText loginEdit = (EditText)findViewById(R.id.editText1);

//получаем содержимое текстового поля

          Stringlogin=loginEdit.getText();

// загружаемредакторнастроек

          SharedPreferences settings=getPreferences(0);

          SharedPreferences.Editor editor=settings.edit();

//записывем в редактор настройки

          editor.putString(“Login”,login);

// сохраняем данные из редактора

editor.commit();

}

В данном примере в качестве настройки используется строка Login. Она загружается при запуске программы и сохраняется при завершении работы приложения. Доступ к таким настройкам не может быть осуществлен на стадии компиляции через редактор.

 

Вопросы для самопроверки

    1. Где приложение хранит свои настройки?
    2. Как можно ли задать настройки приложения на стадии компиляции?

 



[i] http://www.promwad.com/technologies/mobile-platforms-ru.html

[ii] http://ru.wikipedia.org/wiki/Java

[iii] http://droid.ameego.ru/wiki/AndroidManifest.xml




наверх