Главная » Разработка для Android » Отслеживание изменений текущего состояния

0

Чтобы экземпляры Активностей могли реагировать  на изменения теку- щего состояния,  Android предоставляет набор обработчиков  для событий, возникающих при переходе объекта Activity  через стадии полноценный, видимый  и активный.  

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

Листинг 3.12. Обработчики, следящие за сменой состояний Активности

package com.paad.myapplication;

import android.app.Activity;

import android.os.Bundle;

public class MyActivity extends Activity {

// Вызывается при входе в "полноценное" состояние.

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

// Инициализируйте Активность.

}

// Вызывается, когда метод onCreate завершил свою работу,

// и используется для восстановления состояния пользовательского

// интерфейса

@Override

public void onRestoreInstanceState(Bundle savedInstanceState) {

super.onRestoreInstanceState(savedInstanceState);

// Восстановите состояние UI из переменной savedInstanceState.

// Этот объект типа Bundle также был передан в метод onCreate.

}

// Вызывается перед тем, как Активность становится "видимой".

@Override

public void onRestart(){

super.onRestart();

// Загрузите изменения, учитывая то, что Активность

// уже стала "видимой" в рамках данного процесса.

}

// Вызывается в начале "видимого" состояния.

@Override

public void onStart(){

super.onStart();

// Примените к UI все необходимые изменения, так как

// Активность теперь видна на экране.

}

// Вызывается в начале "активного" состояния.

@Override

public void onResume(){

super.onResume();

// Возобновите все приостановленные обновления UI,

// потоки или процессы, которые были "заморожены",

// когда данный объект был неактивным.

}

// Вызывается для того, чтобы сохранить пользовательский интерфейс

// перед выходом из "активного" состояния.

@Override

public void onSaveInstanceState(Bundle savedInstanceState) {

// Сохраните состояние UI в переменную savedInstanceState.

// Она будет передана в метод onCreate при закрытии и

// повторном запуске процесса. super.onSaveInstanceState(savedInstanceState);

}

// Вызывается перед выходом из "активного" состояния

@Override

public void onPause(){

// "Замораживает" пользовательский интерфейс, потоки

// или трудоемкие процессы, которые могут не обновляться,

// пока Активность не находится на переднем плане. super.onPause();

}

// Вызывается перед тем, как Активность перестает быть "видимой".

@Override

public void onStop(){

// "Замораживает" пользовательский интерфейс, потоки

// или операции, которые могут подождать, пока Активность

// не отображается на экране. Сохраняйте все введенные

// данные и изменения в UI так, как будто после вызова

// этого метода процесс должен быть закрыт. super.onStop();

}

// Вызывается перед выходом из "полноценного" состояния.

@Override

public void onDestroy(){

// Очистите все ресурсы. Это касается завершения работы

// потоков, закрытия соединений с базой данных и т. д. super.onDestroy();

}

}

Как видно из кода, переопределяя эти обработчики,  вы всегда должны вызывать одноименные  методы родительского класса.

Источник: Майер P. Android 2 : программирование приложений для планшетных компьютеров и смартфонов : [пер. с англ. ] / Рето Майер. — М. : Эксмо, 2011. — 672 с. — (Мировой компьютерный бестселлер).

По теме:

  • Комментарии