The active life cycle is when your activity is in the foreground and
has focus. Here it is actively receiving input from user events and
no other activities are obscuring it. On [UNKNOWN] and
the active lifetime ends as soon as your activity is partially obscured,
like in this example. [SOUND] You can see here the permissions dialogue
is displayed in front of Google Play for
an app in store. Or the same thing happens when you have another activity trying
to fulfill an implicit intent and the user needs to make a selection. So
to make efficient use of limited resources,
you'll want to use these signals to adjust your app's resource burden.
So, most updates through a UI, can be paused when this lifetime ends,
which is announced by onPause. But as you see, the app is still visible, so
you shouldn't pause any processes that are drawing your UI. The visible
lifetime on the other hand continues whenever the app is at all visible and
ends as soon as it's completely obscured by another app. Like this.
[SOUND] At this point, our app is moved to the background.
So when you see on stop, you know the user can't see your app at all. So, while
OnCreate and OnDestroy will be called at most once, each time your app is run,
these handlers are likely to be called many times, while the app is running.
Now, this is where things get a little different. On almost al platforms,
app life cycles are deterministic. Generally, you'll start a program and
it'll keep running, until it either completes or the user cancels it. You look
at traditional desktop development that means your app keeps running until your
user chooses quit or exit from the file menu. At that point you can say stay and
free resources. But as we know on Android life cycles work a little differently.
So, let's take a closer look at exactly how that works now.
دورة الحياة النشطة هي عندما يكون النشاط موجودًا في الأمامية و
محل اهتمام. إليكم استلام إدخال نشط من أحداث المستخدم
ولا توجد أية أنشطة أخرى تحجبه. على [UNKNOWN] و
تنتهي مدة بقاء النشاط بمجرد أن يتم حجب النشاط جزئيًا
كما في هذا المثال. [SOUND] كما هو واضح لكم، يتم عرض مربع حوار
الأذون أمام Google Play
من أجل تطبيق في المتجر. أو نفس الشيء يحدث عندما يوجد نشاط آخر يحاول
،تحقيق هدف ضمني والمستخدم بحاجة إلى إجراء تحديد. لذا
،من أجل استغلال الموارد المحدودة بشكل فعال
.فيجب استخدام هذه الإشارات لضبط عبء الموارد للتطبيق
،فيمكن إيقاف أغلب التحديثات التي تتم عبر واجهة المستخدم إيقافًا مؤقتًا عندما تنتهي مدة البقاء هذه
،وهو الأمر الذي يتم الإعلان عنه بواسطة onPause. ولكن، كما ترون لا يزال التطبيق مرئيًا
لذا لا يتعين إيقاف أية عمليات مؤقتًا تقوم بسحب واجهة المستخدم. وعلى الجانب الآخر، تستمر
مدة بقاء الظهور متى كان التطبيق مرئيًا و
.تنتهي بمجرد أن يتم حجبه تمامًا بواسطة تطبيق آخر. مثل هذا
.SOUND] في هذه الفترة، ينتقل التطبيق إلى الخلفية]
فعندما تشاهدون أمر إيقاف، تعلمون أن المستخدم لا يستطيع مشاهدة التطبيق مطلقًا. في حين أنه يتم طلب
،OnCreate و OnDestroy مرة واحدة
.ففي كل مرة يتم فيها تشغيل التطبيق، من المرجح أن يتم طلب هذه المعالجات عدة مرات أثناء كون التطبيق قيد التشغيل
،فالأمور تصير مختلفة في هذه الحالة. على أغلب الأنظمة الأساسية
تكون دورة حياة التطبيق محددة مسبقًا. وبوجه عام، إنكم تقومون بتشغيل البرنامج و
يستمر في العمل لحين اكتماله أو قيام المستخدم بإلغائه. إنكم تنظرون إلى
عملية التطوير التقليدية الخاصة بسطح المكتب والتي تعني أن التطبيق يستمر قيد التشغيل
لحين اختيار المستخدم quit أو exit من قائمة file. في هذا الوقت يمكنكم
.القول بأنه يمكن البقاء وإفراغ الموارد. ولكن كما هو معلوم لديكم فإن دورة الحياة تعمل بشكل مختلف على Android
.فلنتخذ صورة مقربة على كيفية عملها الآن
En el ciclo de vida activo, la actividad
está en primer plano y tiene un foco.
Recibe datos de manera activa
de los eventos del usuario,
sin que otras actividades la tapen.
Se llama a onPause
y el ciclo de vida activo finaliza
en cuanto la actividad se tapa
parcialmente, como en este ejemplo.
El cuadro de diálogo Permisos aparece
delante al instalar una app en Google Play.
Lo mismo sucede cuando otra actividad
trata de cumplir un Intent implícito
y el usuario debe hacer una selección.
Para hacer un uso eficiente
de los recursos limitados,
utiliza estas señales para ajustar
la carga de recursos de la aplicación.
Así, muchas actualizaciones de la IU
pueden pausarse
al acabar este ciclo de vida,
a través del método onPause.
Pero la aplicación aún es visible,
por lo que no conviene
pausar procesos que dibujan la interfaz.
Por otro lado, el ciclo visible continúa
cuando la aplicación es visible
y acaba cuando la tapa
por completo otra aplicación.
Así.
En este punto, la aplicación
queda relegada al segundo plano.
Cuando veas onStop, sabrás que el usuario
ya no puede ver la aplicación.
Mientras que onCreate y onDestroy
se llamarán una vez al ejecutar la app,
estos manejadores se llamarán muchas veces
mientras la app esté en ejecución.
Aquí es donde es un poco distinto.
En casi todas las plataformas,
los ciclos de vida son deterministas.
Se inicia un programa y sigue en ejecución
hasta que se complete
o el usuario lo cancele.
En las apps de escritorio tradicionales,
estas siguen en ejecución
hasta que el usuario
sale o cierra en el menú Archivo.
A partir de ahí
ya puedes liberar recursos.
Pero los ciclos de Android
son un poco distintos.
Veamos con detenimiento su funcionamiento.
Lifecycle aktif ketika aktivitas anda
berada di foreground
dan memiliki fokus.
Berikut ini menerima input
secara aktif dari pengguna?
dan bukan aktivitas lainnya
menutupi itu.
onPause digunakan dan lifetime
aktif berakhir.
seketika saat aktivitas anda
disamarkan sebagian
seperti contoh ini.
Anda dapat melihat dialog persetujuan
ditampilkan
di depan Google Play untuk applikasi
di store.
Atau hal yang sama terjadi
jika anda memiliki aktivitas yang sama
mencoba untuk memenuhi maksud implisit
dan pengguna perlu membuat pilihan.
Jadi untuk membuat penggunaan sumber
daya terbatas yang efisien,anda akan
menggunakan sinyal ini untuk menyesuaikan
halangan pada sumber daya aplikasi anda
Jadi, sebagian besar update UI dapat
dihentikan saat lifetime berakhir,
yang diberitahukan oleh onPause.
Tapi seperti yang anda lihat,
aplikasi ini masih dapat terlihat,
jadi anda tidak perlu menjeda proses
apapun yang menarik aplikasi lain.
Lifetime terlihat
di sisi lain melanjutkan
kapanpun aplikasi ini diatur
dalam mode semua terlihat
dan berhenti saat sepenuhnya ditutupi
oleh aplikasi lain.
Seperti ini.
Pada saat ini,
aplikasi kita pindah ke latar belakang.
Jadi saat anda melihat OnStop,
anda tahu pengguna tidak akan melihat
aplikasi anda sama sekali.
Sehingga, sementara OnCreate dan OnDestroy
akan digunakan setidaknya satu kali,
setiap kali aplikasi anda berjalan,
handler ini cenderung digunakan
beberapa kali,saat aplikasi anda berjalan.
Sekarang, inilah dimana beberapa hal
sedikit berbeda.
Pada hampir semua platform, aplikasi
life cycle merupakan penentu.
Pada umumnya, anda akan memulai program
dan itu akan terus berjalan,
hingga lengkap atau pengguna
membatalkannya.
Anda melihat perkembangan desktop
tradisional
dimana aplikasi anda tetap berjalan
hingga pengguna anda memilih berhenti
atau keluar dari menu berkas.
Pada waktu ini, anda akan menyimpan
sumber daya bebas.
Tapi seperti yang kita ketahui,
lifecycle Android cukup berbeda,
Jadi, mari melihat lebih dekat
bagaimana itu sebenarnya bekerja saat ini.
アクティブなライフサイクルとは Activityが
フォアグラウンドでフォーカスされている時です
これはユーザイベントから入力を受け取り
他のActivityが隠れている時です
onPauseが生じて
アクティブなライフタイムが終わると
次の例のようにすぐにActivityは
部分的に隠れます
ストアでpermissionを求めるアプリのダイアログが
Google Playの前面に表示されています
他のActivityに
暗黙的インテントを実行させたり
ユーザが選択させる時も同様に表示されます
限られたリソースを効果的に使うため
この信号をアプリのリソース消費の調節に使います
UIからのアップデートは
ライフタイムを終える時に休止でき
それをonPauseで知らせます
ご覧のようにアプリはまだ見えているので
UIを描くプロセスを止めてはいけません
アプリが見えている時 ライフタイムは続きますが
他のアプリによって完全に隠されると
このようにすぐに終了します
この時点でアプリは
バックグラウンドへ移動させられます
onStopが呼び出されると
ユーザからはアプリが見えなくなります
アプリを走らせるとonCreateと
onDestroyが一度だけ呼び出されますが
onPauseとonStopは何度も呼び出されます
ここに動作のちょっとした違いがあります
多くのプラットフォームでは
アプリのライフサイクルは決定論的です
プログラムを開始すると 完了するか
ユーザが取り消すまで実行し続けます
ユーザが終了させるまでアプリが実行し続ける
デスクトップの開発では
まず状態を継続して終了時にリソースを解放します
しかしAndroidのライフサイクルは
少し違う動きをします
では動作をより詳しく見てみましょう
active life cycle은 activity가
foreground에 있고 focus가
잡혀 있을 때를 뜻합니다
유저 이벤트에서 계속 인풋을 받고
다른 activity에 의해 방해되지 않습니다
onPause가 호출되면
active lifetime은 activity가 부분적으로
방해되는 즉시 끝나는데
이 예시를 보시면 아실 겁니다
permissions dialogue가
스토어 앱을 표시하기 위해
구글 플레이 앞에 나와있죠
다른 implicit intent를 충족시키려 하거나
유저 선택시 다른 activity에서도
일어나는 현상입니다
한정된 리소스를
효과적으로 이용하려면
이런 신호들을 앱의 리소스 부담을
줄이는 데 이용해야죠
그래서 onPause를 통해
lifetime이 끝날 때
UI를 통한 업데이트를 일시중지할 수 있습니다
하지만 앱이 아직 보이는 상태라면
UI를 작성중인 프로세스를
일시중지해서는 안 됩니다
눈에 보이는 lifetime의 경우는
앱이 보이는 한 계속되고
다른 앱에 의해 완전히 가려질 때
즉시 끝납니다, 이것처럼요
이 경우 우리 앱은
백그라운드로 이동합니다
onStop에서는 사용자가 앱을
전혀 볼 수 없죠
앱이 실행되는 동안 onCreate와
onDestroy는 한 번씩 호출되지만
이 handler들은 앱 실행기간 동안
여러 번 호출됩니다
이제 좀 다르게 되었습니다
거의 모든 플랫폼에서는
앱 life cycle은 정해져있죠
프로그램을 시작하면
작업을 완료하거나 취소하기 전에는
계속 실행됩니다
전통적인 데스크톱 개발에서는
사용자가 종료를 누를 때까지
앱은 계속 실행됩니다
그때 부족했던 리소스가
확보되는 거죠, 하지만 안드로이드의
life cycle은 조금 다릅니다
그러면 그 원리를
정확히 알아봅시다
O ciclo de vida ativo é quando sua atividade é realizada em segundo plano e
tem foco. Aqui, ela está recebendo ativamente a entrada de eventos do usuário,
sem ser ocultada por outras atividades. Quando onPause é chamado, o tempo de vida
ativa termina assim que sua atividade fica parcialmente sombreada,
como neste exemplo. [SOUND] Você pode ver aqui que o diálogo de permissões
é exibido na frente do Google Play para
um aplicativo na loja. O mesmo acontece quando há outra atividade tentando
preencher uma intent implícita e o usuário precisa fazer uma seleção. Para
o uso eficiente dos recursos limitados,
você usará esses sinais para ajustar sua carga de recursos do aplicativo.
A maioria das atualizações por meio de interface do usuário pode ser pausada ao término de seu tempo de vida,
que é anunciado pelo onPause. Com você pode ver, o aplicativo ainda está visível,
portanto, você não deve pausar nenhum processo que esteja desenhando sua interface de usuário. O tempo de vida visível,
por outro lado, continua enquanto o aplicativo estiver todo visível e
termina tão logo ele seja completamente sombreado por outro aplicativo. Gosto disso.
[SOUND] Neste ponto, nosso aplicativo foi para o segundo plano.
Quando você vir onStop, saberá que o usuário não pode ver seu aplicativo. Enquanto
OnCreate e OnDestroy serão chamados no máximo uma vez quando seu aplicativo for executado,
esses manipuladores provavelmente serão chamados muitas vezes, enquanto o aplicativo estiver em execução.
Aqui as coisas começam a ficar diferentes. Em quase todas as plataformas,
os ciclos de vida de aplicativos são determinísticos. Geralmente, você inicia um programa e
ele fica em execução até se completar ou ser cancelado pelo usuário. Veja o desenvolvimento
tradicional de desktop, no qual o aplicativo é executado até que o
usuário escolha quit ou exit no menu de arquivo. Nesse ponto, você pode dizer fique e
libere recursos. Como sabemos, o funcionamento dos ciclos de vida é um pouco diferente no Android.
Vamos dedicar um olhar mais atento sobre como isso funciona.
Активный жизненный цикл
имеет место тогда,
когда ваша активность имеет приоритет
и находится в фокусе.
Здесь происходит активное
занесение данных пользователем,
и никакие другие активности
не препятствуют этому.
onPause вызывается,
и активное время жизни заканчивается,
как только что-то частично препятствует
её работе, как в этом примере.
Здесь вы можете видеть,
что происходит диалог о доступе на фоне
Google Play для приложения в магазине.
Либо то же самое происходит,
когда другая активность пытается
осуществить действие косвенным образом
и пользователю необходимо сделать выбор.
Поэтому, чтобы эффективно использовать
ограниченные ресурсы,
вам надо использовать эти сигналы,
чтобы отрегулировать
потребность в ресурсах.
Так, обновления
через интерфейс пользователя
в основном могут быть приостановлены,
когда заканчивается время жизни,
что происходит
при вызове обработчика onPause.
Но, как вы видите,
приложение всё ещё видно,
поэтому вам надо
приостановить все процессы,
пользующиеся интерфейсом пользователя.
С другой стороны, видимое время жизни
продолжается, пока всё приложение видно
и завершается,
как только другое приложение
воспрепятствует полностью его работе.
Как здесь.
В данный момент
наше приложение стало фоновым.
Итак, когда вы видите,
что вызван обработчик onStop,
пользователь уже совершенно
не может видеть ваше приложение.
В то время, как обработчики событий
OnCreate и OnDestroy
будут вызваны максимум один раз
за время работы вашего приложения,
эти обработчики могут вызываться
много раз за время работы приложения.
Вот где дела обстоят иначе.
На почти всех платформах
жизненные циклы приложений
детерминированы.
Обычно вы запускаете приложение,
и оно функционирует,
пока оно либо завершит работу,
либо пользователь отменит его работу.
Обычные приложения
для настольного компьютера работают,
пока пользователь не решит закрыть их
или не выйдет из программы
через меню Файл.
В этот момент высвобождаются ресурсы.
Но, как мы знаем, в системе Android
жизненные циклы работают по-другому.
Давайте теперь разберёмся подробнее,
как именно они работают.
Active life cycle là khi activity của bạn đang trong foreground và
có focus. Đây là input active
nhận được từ người dùng
và các activity bị ẩn đi. Trong [xxx] và
the active lifetime ends as soon as your activity is partially obscured,
như trong ví dụ này. Bạn có thể thấy các permission
được hiển thị phía trước Google Play cho
một ứng dụng trong store. Hoặc một thứ giống vậy xảy ra khi bạn có activity khác cố
thực hiện một lệnh có chủ ý và người dùng cần chọn nó.
Nên sử dụng hợp lý các tài nguyên có hạn.
Bạn sẽ muốn sử dụng những signal này để
điều chỉnh app của bạn phù hợp với tài nguyên.
Nên, đa số update qua UI, có thể dừng lại khi lifetime kết thúc,
bằng cách thông báo onPause. Nhưng như bạn thấy, app vẫn visible,
vì thế bạn không nên pause bất kì process nào
đang tạo UI cho bạn. Mặc khác, The visible lifetime
vẫn tiếp tục khi app is at all visible và
ends as soon as it's completely obscured by another app. Like this.
Tại đây, app của chúng ta được dời tới background.
Vì thế khi bạn thấy onStop, bạn biết người dùng hoàn toàn không thế thấy app của bạn.
Trong khi onCreat và onDestroy sẽ được gọi nhiều nhất một lần, mỗi khi app của bạn được chạy.
handler có thể gọi nhiều lần nữa, khi app đang chạy.
Bây giờ, đây là nơi tạo nên sự khác biệt. Trong hầu hết các platform,
vòng đời của app là bất định. Tổng quát hóa,
bạn sẽ bắt đầu chương trình và
giữ cho nó tiếp tục chạy, cho tới khi nó hoàn tất hoặc người dùng cancel nó. Bạn hãy nhìn vào desktop
app của bạn vẫn chạy cho khi
người dùng của bạn chọn quit hoặc exit từ menu. Tại đây bạn có thể stay và
giải phóng tài nguyên. Nhưng như chúng ta biết, cách Android life cycle làm việc hơi khác một tí.
So, hãy quan sát thật kĩ cách nó làm việc ngay bây giờ.
活动生命周期是指活动处于前台
并且获得焦点。在这里,它主动接收来自用户事件的输入,
并且没有其他活动阻挡它。在活动受到
部分阻挡时,[未知] 和活动生命周期结束,
就像此例中所示。[声音] 在这里可以看到,权限对话框
显示在商店中一款应用的
Google Play 前。或者,如果有另一个活动试图完成隐式意图,
而用户需要做出某些选择,也会发生相同的情况。因此,
为了高效利用有限的资源,
可使用这些信号来调整应用的资源负担。
那么,大多数通过 UI 进行的更新可在生命周期结束时暂停,
由 onPause 宣布。但是您看,应用依然可见,
因此,不能暂停任何正在绘制 UI 的进程。另一方面,
不论何时,只要应用完全可见,可见的生命周期就会持续,
并在完全被其他应用阻挡后结束。就像这样。
[声音] 此时,应用就移动到了后台。
当您看到 onStop,就知道用户看不到您的应用了。因此,虽然
OnCreate 和 OnDestroy 每次在应用运行时最多只会被调用一次,
但是在应用运行期间,这些处理程序会被调用很多次。
这就是细微的差异之处。在几乎所有平台上,
应用生命周期都是确定的。一般说来,您启动程序
并保持其运行,直到任务完成或用户取消。看看
传统的桌面开发,它意味着应用会持续运行,直到
用户选择退出或从文件菜单中退出。此时,您可以说保持和
释放资源。但您也知道,Android 生命周期的运行方式有些不同。
那么,让我们仔细看看它现在到底是如何运行的。