summaryrefslogtreecommitdiffstats
path: root/docs/html-intl/intl/ru/training/basics/activity-lifecycle/pausing.jd
diff options
context:
space:
mode:
Diffstat (limited to 'docs/html-intl/intl/ru/training/basics/activity-lifecycle/pausing.jd')
-rw-r--r--docs/html-intl/intl/ru/training/basics/activity-lifecycle/pausing.jd147
1 files changed, 147 insertions, 0 deletions
diff --git a/docs/html-intl/intl/ru/training/basics/activity-lifecycle/pausing.jd b/docs/html-intl/intl/ru/training/basics/activity-lifecycle/pausing.jd
new file mode 100644
index 0000000..c483780
--- /dev/null
+++ b/docs/html-intl/intl/ru/training/basics/activity-lifecycle/pausing.jd
@@ -0,0 +1,147 @@
+page.title=Приостановка и возобновление операции
+page.tags=жизненный цикл операции
+helpoutsWidget=true
+
+trainingnavtop=true
+
+@jd:body
+
+<div id="tb-wrapper">
+ <div id="tb">
+
+ <h2>Содержание этого урока</h2>
+ <ol>
+ <li><a href="#Pause">Приостановка операции</a></li>
+ <li><a href="#Resume">Возобновление операции</a></li>
+ </ol>
+
+ <h2>См. также:</h2>
+ <ul>
+ <li><a href="{@docRoot}guide/components/activities.html">Операции</a>
+ </li>
+ </ul>
+
+<h2>Попробуйте сами</h2>
+
+<div class="download-box">
+ <a href="http://developer.android.com/shareables/training/ActivityLifecycle.zip" class="button">Загрузить демонстрацию</a>
+ <p class="filename">ActivityLifecycle.zip</p>
+</div>
+
+ </div>
+</div>
+
+<p>При обычном использовании приложения выполняемая на экране операция иногда закрывается другими
+визуальными компонентами, в результате чего операция <em>приостанавливается</em>. Например, при открытии полупрозрачной
+операции (например диалогового окна) предыдущая операция приостанавливается. Пока
+операция остается частично видимой, но не остается в фокусе, она остается на паузе.</p>
+
+<p>Однако когда операция полностью закрывается и становится невидимой, она <em>останавливается</em> (об этом будет рассказано
+на следующем уроке).</p>
+
+<p>Когда операция приостанавливается, система вызывает метод {@link
+android.app.Activity#onPause onPause()} на {@link android.app.Activity}, что позволяет
+остановить текущие действия, которые не должны продолжаться во время паузы (например воспроизведение видео), или сохранять
+любую информацию, которая должна постоянно сохраняться в случае выхода пользователя из приложения. Если
+пользователь возвращается к операции после паузы, система возобновляет ее и вызывает метод
+{@link android.app.Activity#onResume onResume()}.</p>
+
+<p class="note"><strong>Примечание.</strong> Когда операция получает вызов {@link
+android.app.Activity#onPause()}, это может указывать, что операция будет приостановлена совсем ненадолго
+и пользователь сможет к ней вернуться. Однако обычно это является первым признаком
+выхода пользователя из операции.</p>
+
+<img src="{@docRoot}images/training/basics/basic-lifecycle-paused.png" />
+<p class="img-caption"><strong>Рисунок 1</strong>. Когда полупрозрачная операция закрывает
+вашу операцию, система вызывает {@link android.app.Activity#onPause onPause()} и операция
+переходит в состояние паузы (1). Если пользователь возвращается к операции, находящейся в состоянии паузы,
+система вызывает {@link android.app.Activity#onResume onResume()} (2).</p>
+
+
+<h2 id="Pause">Приостановка операции</h2>
+
+<p>Когда система вызывает {@link android.app.Activity#onPause()} для операции, это
+технически означает, что операция остается частично видимой. Однако чаще всего это означает, что
+пользователь покидает операцию, и вскоре она войдет в состояние остановки. Обратный вызов
+ {@link android.app.Activity#onPause()} обычно следует использовать для следующих целей:</p>
+
+<ul>
+ <li>Остановка анимации или других текущих действий, которые могут потреблять ресурсы процессора.</li>
+ <li>Запись несохраненных изменений, если пользователи ожидают сохранения таких изменений
+при выходе (например черновиков электронных писем).</li>
+ <li>Высвобождение ресурсов системы, например ресиверов, интерфейсов сенсоров (например
+GPS) или других ресурсов, влияющих на время работы аккумулятора во время паузы и не
+требующихся пользователю.</li>
+</ul>
+
+<p>Например, если ваше приложение использует {@link android.hardware.Camera}, метод
+{@link android.app.Activity#onPause()} подойдет для его освобождения.</p>
+
+<pre>
+&#64;Override
+public void onPause() {
+ super.onPause(); // Always call the superclass method first
+
+ // Release the Camera because we don't need it when paused
+ // and other activities might need to use it.
+ if (mCamera != null) {
+ mCamera.release()
+ mCamera = null;
+ }
+}
+</pre>
+
+<p>Обычно <strong>не</strong> следует использовать {@link android.app.Activity#onPause()} для сохранения
+пользовательских изменений (например введенной в форму личной информации) в постоянном хранилище. Изменения
+пользователя нужно сохранять в постоянном хранилище {@link android.app.Activity#onPause()}
+только в тех случаях, когда пользователи ожидают автоматического сохранения изменений (например при составлении черновика электронного письма).
+Однако в состоянии {@link
+android.app.Activity#onPause()} следует избегать операций с высокой нагрузкой на процессор, например выполнения записи в базу данных, поскольку это может замедлить видимый
+переход к следующей операции (вместо этого следует выполнять операции завершения работы с высокой нагрузкой при
+{@link android.app.Activity#onStop onStop()}).</p>
+
+<p>Количество операций, выполняемых с помощью метода {@link android.app.Activity#onPause
+onPause()}, должно быть не очень большим, чтобы пользователь мог быстро переключаться на следующую
+задачу при фактической остановке вашей операции.</p>
+
+<p class="note"><strong>Примечание.</strong> При приостановке операции экземпляр {@link
+android.app.Activity} остается в памяти и заново вызывается при возобновлении операции.
+Не нужно заново инициализировать компоненты, созданные с использованием любого из методов обратного вызова для возобновления
+операции.</p>
+
+
+
+<h2 id="Resume">Возобновление операции</h2>
+
+<p>Когда пользователь возобновляет операцию после паузы, система вызывает метод {@link
+android.app.Activity#onResume()}.</p>
+
+<p>Учтите, что система вызывает этот метод каждый раз, когда ваша операция выполняется на экране,
+в том числе и при первом ее запуске. В связи с этим, нужно реализовать метод {@link
+android.app.Activity#onResume()} для инициализации компонентов, освобождаемых в состоянии {@link
+android.app.Activity#onPause()}, и выполнения других операций инициализации, которые должны происходить каждый раз при возобновлении операции
+(например при запуске анимированных элементов и компонентов, которые используются
+только когда пользователь следит за операцией на экране).</p>
+
+<p>Следующий пример {@link android.app.Activity#onResume()} дополняет
+пример {@link android.app.Activity#onPause()} выше. В нем инициализируется камера,
+которая освобождается на время приостановки операции.</p>
+
+<pre>
+&#64;Override
+public void onResume() {
+ super.onResume(); // Always call the superclass method first
+
+ // Get the Camera instance as the activity achieves full user focus
+ if (mCamera == null) {
+ initializeCamera(); // Local method to handle camera init
+ }
+}
+</pre>
+
+
+
+
+
+
+