Activity生命周期详解

合集下载

Activity生命周期解说

Activity生命周期解说

Activity生命周期解说二、事件方法链2.1进入ActivityonCreate -> onStart -> onResume2.2BACK键onPause->onStop->onDestroy2.3HOME键Home键退出:onPause->onStopHome键回来:onRestart -> onStart->onResume2.4休眠/恢复休眠:onPause恢复:onResume2.5旋转屏幕未设置android:configChanges:onPause -> onStop -> onDestory -> onCreate -> onStart -> onResume设置了android:configChanges="orientation|keyboardHidden":不会触发生命周期方法,参见文章这里。

2.6来电来电,显示来电界面:onPause -> onStop关闭电话界面,重新回到当前Activity:onRestart -> onStart->onResume2.7其他Activity进入下一个Activity:onPause -> onStop从其他Activity返回至当前Acitivity:onRestart -> onStart->onResume三、与Activity生命周期结合的应用场景3.1与广播(Broadcast)结合在onResume注册广播(registerLinstener),在onPause注销广播(unregisterLinstener)。

例如:做"摇一摇"功能(传感器)、监听网络变化,就可以在onResume中注册监听,在onPause里注销掉,已节省资源提高效率。

3.2与服务(Service)结合在onStart绑定服务(bindService),在onStop中取消绑定(unbindService)。

6.Activity生命周期

6.Activity生命周期

这七个方法定义了Activity的完整生命周期。 这七个方法定义了Activity的完整生命周期。实现这些方法可以帮助我们监视其中的三个嵌套生命周期循 Activity的完整生命周期 环:
• •
Activity的 自第一次调用onCreate()开始, onDestroy()为止 Activity的完整生命周期自第一次调用onCreate()开始,直至调用onDestroy()为止。Activity在 自第一次调用onCreate()开始 直至调用onDestroy()为止。Activity在 onCreate()中设置所有 全局”状态以完成初始化,而在onDestroy()中释放所有系统资源。例如, 中设置所有“ onDestroy()中释放所有系统资源 onCreate()中设置所有“全局”状态以完成初始化,而在onDestroy()中释放所有系统资源。例如, 如果Activity有一个线程在后台运行从网络上下载数据,它会在onCreate()创建线程, Activity有一个线程在后台运行从网络上下载数据 onCreate()创建线程 如果Activity有一个线程在后台运行从网络上下载数据,它会在onCreate()创建线程,而在 onDestroy()销毁线程 销毁线程。 onDestroy()销毁线程。 Activity的 调用开始直到相应的onStop()调用结束。 Activity的可视生命周期自onStart()调用开始直到相应的onStop()调用结束。在此期间,用户可以 自onStart()调用开始直到相应的onStop()调用结束 在此期间, 在屏幕上看到Activity 尽管它也许并不是位于前台或者也不与用户进行交互。在这两个方法之间, Activity, 在屏幕上看到Activity,尽管它也许并不是位于前台或者也不与用户进行交互。在这两个方法之间, 我们可以保留用来向用户显示这个Activity所需的资源。例如,当用户不再看见我们显示的内容时, Activity所需的资源 我们可以保留用来向用户显示这个Activity所需的资源。例如,当用户不再看见我们显示的内容时, 我们可以在onStart()中注册一个BroadcastReceiver来监控会影响UI的变化,而在onStop()中来注消。 onStart()中注册一个BroadcastReceiver来监控会影响UI的变化 onStop()中来注消 我们可以在onStart()中注册一个BroadcastReceiver来监控会影响UI的变化,而在onStop()中来注消。 方法可以随着应用程序是否为用户可见而被多次调用。 onStart() 和 onStop() 方法可以随着应用程序是否为用户可见而被多次调用。 Activity的 调用起, onPause()调用为止 Activity的前台生命周期自onResume()调用起,至相应的onPause()调用为止。在此期间,Activity 自onResume()调用起 至相应的onPause()调用为止。在此期间, 位于前台最上面并与用户进行交互。Activity会经常在暂停和恢复之间进行状态转换——例如当设备 会经常在暂停和恢复之间进行状态转换—— 位于前台最上面并与用户进行交互。Activity会经常在暂停和恢复之间进行状态转换——例如当设备 转入休眠状态或者有新的Activity启动时,将调用onPause() 方法。 Activity获得结果或者接收到 Activity启动时 转入休眠状态或者有新的Activity启动时,将调用onPause() 方法。当Activity获得结果或者接收到 新的Intent时会调用onResume() 方法。关于前台生命周期循环的例子请见PPT下方备注栏 Intent时会调用 下方备注栏。 新的Intent时会调用onResume() 方法。关于前台生命周期循环的例子请见PPT下方备注栏。

Activity生命周期详解

Activity生命周期详解

当Activity从一种状态转变到另一种状态时,会调用以下保护方法来通知这种变化:void onCreate(Bundle savedInstanceState)void onStart()void onRestart()void onResume()void onPause()void onStop()void onDestroy()这七个方法定义了Activity的完整生命周期。

实现这些方法可以帮助我们监视其中的三个嵌套生命周期循环:Activity的完整生命周期自第一次调用onCreate()开始,直至调用onDestroy()为止。

Activity在onCreate()中设置所有“全局”状态以完成初始化,而在onDestroy()中释放所有系统资源。

例如,如果Activity有一个线程在后台运行从网络下载数据,它会在onCreate()创建线程,而在 onDestroy()销毁线程。

Activity的可视生命周期自onStart()调用开始直到相应的onStop()调用结束。

在此期间,用户可以在屏幕上看到Activity,尽管它也许并不是位于前台或者也不与用户进行交互。

在这两个方法之间,我们可以保留用来向用户显示这个Activity所需的资源。

例如,当用户不再看见我们显示的内容时,我们可以在onStart()中注册一个BroadcastReceiver来监控会影响UI的变化,而在onStop()中来注消。

onStart() 和 onStop() 方法可以随着应用程序是否为用户可见而被多次调用。

Activity的前台生命周期自onResume()调用起,至相应的onPause()调用为止。

在此期间,Activity位于前台最上面并与用户进行交互。

Activity会经常在暂停和恢复之间进行状态转换——例如当设备转入休眠状态或者有新的Activity启动时,将调用onPause() 方法。

当Activity获得结果或者接收到新的Intent时会调用onResume() 方法。

activity生命周期有几种状态

activity生命周期有几种状态

activity生命周期有几种状态
Activity生命周期有五种状态,分别是:
1.启动状态:当Activity启动后,会进入此状态,但此状态很短暂,会很快进入运行状态。

2.运行状态:Activity处于屏幕的最前端,它是可见的、有焦点的,并可以与用户进行交互,如单击、长按等事件。

此时,Activity 处于活动或运行状态。

3.暂停状态:在某些情况下,如Activity上覆盖了一个透明或非全屏的Activity,被覆盖的Activity仍然对用户可见,但无法获取焦点,此时它处于暂停状态。

暂停的Activity仍然是存活状态,保留着所有的状态和成员信息,并保持和窗口管理器的连接,但当系统内存不足时,它可能会被系统杀死。

4.停止状态:当Activity完全不可见时,如被另一个Activity 遮挡,它就处于停止状态。

此时,Activity仍然保留着当前的状态和成员信息,但由于对用户不可见,如果系统内存不足,这个Activity 很容易被系统杀死。

5.销毁状态:当Activity处于销毁状态时,意味着它将被清理出内存。

请注意,Activity生命周期指的是一个Activity从创建到销毁的全过程,包括上述的五种状态。

在Android开发中,理解和掌握Activity的生命周期对于内存管理和用户体验都至关重要。

activity的三种状态

activity的三种状态

activity的三种状态全文共四篇示例,供读者参考第一篇示例:Activity是Android平台上的一个重要组件,它代表了用户与手机应用的交互界面。

在Android开发中,Activity的状态管理是十分重要的,了解和掌握Activity的三种状态对于开发人员来说是至关重要的。

Activity一共有三种状态:运行状态、暂停状态和停止状态。

下面将依次详细介绍这三种状态及其生命周期。

1. 运行状态当一个Activity被启动之后,它就进入了运行状态。

在这个状态下,Activity处于前台,即用户正在与之交互。

Activity的生命周期方法如下:onCreate()、onStart()、onResume()。

在onCreate()方法中进行初始化工作,onStart()方法表示Activity正在被启动,onResume()方法表示Activity已经可见并且用户正在与之交互。

在运行状态下,Activity可以响应用户的各种操作,比如点击按钮、输入文字等。

当Activity接收到其他的Intent或者用户手动关闭了它,那么它就会进入到下一个状态:暂停状态。

2. 暂停状态当一个Activity被另一个Activity遮挡而失去焦点时,它就会进入暂停状态。

在这个状态下,Activity并没有被销毁,只是失去了用户的焦点。

Activity的生命周期方法如下:onPause()。

在onPause()方法中,通常会保存一些临时数据或者释放一些资源。

在暂停状态下,Activity仍然处于活动状态,只是没有焦点而已。

当用户重新回到这个Activity时,它就会执行onResume()方法重新获得焦点,进入运行状态。

如果用户关闭了这个Activity,那么它就会进入到下一个状态:停止状态。

了解和掌握Activity的三种状态对于Android开发人员来说是非常重要的。

只有深入理解这些状态及其生命周期,才能编写出更加稳定和流畅的Android应用。

Activity详细讲解

Activity详细讲解

Activity详细讲解Activity 是我们开发Android应⽤程序最重要的⼀个类。

这个类的内容⽐较多,我理解多少就写多少,希望你喜欢:)这篇⽂章会涉及到以下⼏个内容⼀ Activity的⽣命周期⼆ 让Activity变成⼀个窗⼝:Activity属性设定三 你后台的Activity被系统回收怎么办:onSaveInstanceState四 调⽤与被调⽤:我们的通信使者 - Intent⼀ Activity的⽣命周期和其他⼿机平台的应⽤程序⼀样,Android的应⽤程序的⽣命周期是被统⼀掌控 的,也就是说我们写的应⽤程序命运掌握在别⼈(系统)的⼿⾥,我们不能改变它,只能学习并适应它。

简单地说⼀下为什么是这样:我们⼿机在运⾏⼀个应⽤程序的时候,有可能打进来电话发进来短信,或者没有电了,这时候程序都会被中断,优先去服务电话的基本功能,另外系统也不允许你占⽤太多资源,⾄少要保证电话功能吧,所以资源不⾜的时候也就有可能被⼲掉。

⾔归正传,Activity的基本⽣命周期如下代码所⽰:Java代码1. publicclass MyActivity extends Activity{2. protectedvoid onCreate(BundlesavedInstanceState);3.4. protectedvoid onStart();5.6. protectedvoid onResume();7.8. protectedvoid onPause();9.10. protectedvoid onStop();11.12. protectedvoid onDestroy();13. }public class MyActivity extends Activity {protected void onCreate(Bundle savedInstanceState);protected void onStart();protected void onResume();protected void onPause();protected void onStop();protected void onDestroy();}你⾃⼰写的Activity会按需要 重载这些⽅法,onCreate是免不了的,在⼀个Activity正常启动的过程中,他们被调⽤的顺序是 onCreate -> onStart -> onResume, 在Activity被⼲掉的时候顺序是onPause -> onStop -> onDestroy ,这样就是⼀个完整的⽣命周期,但是有⼈问了 ,程序正运⾏着呢来电话了,这个程序咋办?中⽌了呗,如果中⽌的时候新出的⼀个Activity是全屏的那么:onPause->onStop ,恢复的时候onStart->onResume ,如果打断 这个应⽤程序的是⼀个Theme为Translucent 或者Dialog 的Activity那么只是onPause ,恢复 的时候onResume 。

AndroidActivity的生命周期详细介绍

AndroidActivity的生命周期详细介绍

AndroidActivity的⽣命周期详细介绍Android Activity的⽣命周期详细介绍⽣命周期描述的是⼀个类从创建(new出来)到死亡(垃圾回收)的过程中会执⾏的⽅法。

在这个过程中,会针对不同的⽣命阶段调⽤不同的的⽅法。

Activity是Android中四⼤组件之⼀,是最常见的应⽤组件,也是⽤的最多的组件,它能够提供⼀个界⾯与⽤户进⾏交互。

Activity从创建到销毁有多种状态,从⼀种状态到另⼀种状态时会激发相应的回调⽅法,这些回调⽅法包括:onCreate onDestory onStart onStop onResume onPause。

这些⽅法都是两两对应的,onCreate-->创建与onDestory-->销毁;onStart-->可见与onStop-->不可见;onResume-->可编辑(焦点)和onPause-->未获得焦点。

最后还有⼀个⽅法是onRestart,这个⽅法在什么时候调⽤呢?当Activity被onStop后,但是并没有onDestory,即并没有被销毁时,⽤户重新回到当前Activity时,就调⽤onRestart⽅法,这⾥就不再是调⽤onCreate⽅法了。

public class MainActivity extends ActionBarActivity {private final static String TAG = "MainActivity";@Override// Activity被创建时调⽤protected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(yout.activity_main);Log.e(TAG, "onCreate.......");}@Override// 该状态⽤户可见,但是⽤户还不能与之进⾏交互protected void onStart() {super.onStart();Log.e(TAG, "onStart.......");}@Override// 该状态是Activity获得⽤户焦点,⽤户可以与之进⾏交互protected void onResume() {super.onResume();Log.e(TAG, "onResume.......");}@Override//与onResume对应,当Activity失去焦点时调⽤protected void onPause() {super.onPause();Log.e(TAG, "onPause.......");}@Override//与onStart对应,当Activity不可见时调⽤protected void onStop() {super.onStop();Log.e(TAG, "onStop.......");}@Override//与onCreate对应,当Activity被销毁时调⽤protected void onDestroy() {super.onDestroy();Log.e(TAG, "onDestroy.......");}@Override//Activity从后台重新回到前台调⽤protected void onRestart() {super.onRestart();Log.e(TAG, "onRestart.......");}}Activity的完整⽣命周期:oncreate-->onstart-->onresume-->onpause-->onstop-->ondestory。

Activity生命周期(7个):

Activity生命周期(7个):

Activity⽣命周期(7个):1.onCreate;2.onStart;3.onResume;4.onPause;5.onStop;6.onRestart;7.onDestory;两种特殊情况:a-----Pause和Resumed: 当⽤户在Paused状态按返回键,会直接进⼊Resumed; b-----Stopped和Resumed: 当⽤户在Stopped状态按返回键,会去执⾏Restart(),在进⼊Resumed;定义⽣命周期的优点:①当⽤户接⼀个电话或切换到另⼀个程序不会崩溃; ②当⽤户后台运⾏程序时不会销毁有价值的系统资源; ③当⽤户离开再返回你的应⽤时不会丢失⽤户的进程; ④当⼿机屏幕进⾏横竖屏切换的时候不会崩溃或者丢掉⽤户的进程;现场保护(保存状态):⼀、为什么要做现场保护:1、Activity在⽣命周期中的Paused状态或Stoped状态下,内存空间紧张的时,系统很可能会⼲掉Activity,如果⽤户通过导航再返回刚被⼲掉的Activity,系统只能创建新的Activity,如果之前的Activity界⾯已有⽤户录⼊信息,如⽤户名和密码等,⽽在新的Activity中则没有了,这种时间就需要做现场保护2、横屏与竖屏切换时,⽣命周期变化如下:onPause()->onStop()->onDestroy()->onCreate()->onStart()->onResume()如果当前窗⼝中已录⼊部分信息,⽽⽤户不⼩⼼切换横竖屏,此时需要做现场保护。

///-------onSaveInstanceState(Bundle)--->调⽤时机:(1)、当⽤户按下HOME键时。

(2)、长按HOME键,选择运⾏其他的程序时。

(3)、按下电源按键(关闭屏幕显⽰)时。

(4)、从activity A中启动⼀个新的activity时。

(5)、屏幕⽅向切换时,例如从竖屏切换到横屏时。

Activity的生命周期

Activity的生命周期
的最前端,那么这是的activity处于执行状态的
执行状态---->暂停状态:
当一个activity实例处于暂停状态的时候,这时候会触发onPause()状态
暂停状态---->执行状态:
这时候会触发onResume()
执行状态---->停止状态:
当一个新的activity打开之后会覆盖掉原来的activity,这时原来的activity处于停止状体,这是会调用onPause()和onStop()方法
声明:这两个方法只会在activity对象被系统自动回收的情况下才会调用,但是如果是按BACK键将一个Activity对象销毁系统是不会调用
这两个方法的。
方法之前】。他会将以名称-值对方式记录了activity动作状态的Bundle对象传递给onSaveInstanceState()方法。当activity再次启动
时,这个Bundle会传递给onCreate()方法和随着onSart()方法调用的onRestoreInstanceState(),所以他们两个都可以恢复捕获的状态。
对于onSaveInstanceState()和onRestoreInstanceState()方法知识的补充:
当系统而不是用户自己出于回收内存的考虑,关闭了一个activity之后。用户会期望当他再次回到那个activity的时候,它仍保持着
上次离开时的样子。为了获取activity被杀死前的状态,那么应该在android系统回收activity被回收之前调用该方法【最好是在onPause
void onStart()
void onRestart()
void onResume()
void onPause()

简述Activity生命周期

简述Activity生命周期

简述Activity⽣命周期copy from :基于Android 6.0的源码剖析,分析android Activity启动流程中ActivityManagerService所扮演的⾓⾊⼀、概述上⼀篇⽂章,介绍了startActivity是如何⼀步步创建的,再来看看⽣命周期的控制。

先来⼀张官⽅的Activity状态转换图:Activity的⽣命周期中只有在以下3种状态之⼀,才能较长时间内保持状态不变。

Resumed(运⾏状态):Activity处于前台,且⽤户可以与其交互。

Paused(暂停状态): Activity被在前台中处于半透明状态或者未覆盖全屏的其他Activity部分遮挡。

暂停的Activity不会接收⽤户输⼊,也⽆法执⾏任何代码。

Stopped(停⽌状态):Activity被完全隐藏,且对⽤户不可见;被视为后台Activity。

停⽌的Activity实例及其诸如成员变量等所有状态信息将保留,但它⽆法执⾏任何代码。

除此之外,其他状态都是过渡状态(或称为暂时状态),⽐如onCreate(),onStart()后很快就会调⽤onResume()⽅法。

⼆. ⽣命周期2.1 进程间通信对于App来说,其Activity的⽣命周期执⾏是与系统进程中的ActivityManagerService有⼀定关系的,接下来从进程和线程的⾓度来分析Activity的⽣命周期,这⾥涉及到系统进程和应⽤进程:system_server进程是系统进程,Java framework框架的核⼼载体,⾥⾯运⾏了⼤量的系统服务,⽐如这⾥提供ApplicationThreadProxy(简称ATP),ActivityManagerService(简称AMS),这个两个服务都运⾏在system_server进程的不同线程中,由于ATP和AMS都是基于IBinder接⼝,都是binder线程,binder线程的创建与销毁都是由binder驱动来决定的。

Android学习总结(一)——Activity的基本概念与Activity的生命周期

Android学习总结(一)——Activity的基本概念与Activity的生命周期

Android学习总结(⼀)——Activity的基本概念与Activity的⽣命周期⼀、Activity的基本概念 Activity是Android的四⼤组件之⼀,它是⼀种可以包含⽤户界⾯的组件,主要⽤于和⽤户进⾏交互,⽐如打电话,照相,发送邮件,或者显⽰⼀个地图!Activity⽤于显⽰⽤户界⾯,⽤户通过Activity交互完成相关操作,⼀个App允许有多个Activity。

⼆、Activity的⽣命周期 Activity⽣命周期是每⼀个Android开发者都必须掌握的,当我们深⼊理解活动的⽣命周期之后,就可以写出更加连贯流畅的程序,让我们的程序拥有更好的⽤户体验2.1、Activity的⽣命周期图2.2、Activity的四种状态 每个Activity在其⽣命周期中最多可能会有四种状态。

1.运⾏状态 当⼀个Activity位于返回栈(关于返回栈的概念下⾯再介绍)的栈顶时,这时Activity就处于运⾏状态,系统会将处于栈顶的Activity显⽰给⽤户。

2.暂停状态 当⼀个Activity不再处于栈顶位置,但仍然可见,这时Activity就进⼊了暂停状态。

初学者可能会有这样的疑问,既然Activity都已经不在栈顶了,怎么会还可见呢,这是因为并不是每⼀个Activity都会占满整个屏幕的,⽐如对话框形式的Activity只会占⽤屏幕中间的部分区域。

3.停⽌状态 当⼀个Activity不再处于栈顶位置,并且完全不可见的时候,就进⼊了停⽌状态。

4.销毁状态 当⼀个Activity从返回栈中移除后就变成了销毁状态。

2.3、Android返回栈 Android是使⽤任务(Task)来管理Activity的,⼀个任务就是⼀组存放在栈⾥的Activity集合,这个栈被称作返回栈,栈(堆栈)是⼀种先进后出的数据结构,这⾥顺便提⼀下另⼀种常见的数据结构:队列,队列是⼀种先进先出的数据结构。

每当启动⼀个新的Activity时,它会被放⼊返回栈中,并处于栈顶的位置。

简要叙述activity的概念

简要叙述activity的概念

Activity是Android应用程序的重要组成部分,它代表用户界面上的一项单一操作。

每个Activity都是一个独立的屏幕,通常包含用户交互的界面元素,例如按钮、文本框、图像等。

一个应用程序通常包含多个Activity,它们之间可以通过Intent进行相互调用和传递数据。

1. Activity的生命周期一个Activity从创建到销毁经历了一系列的生命周期,包括以下阶段:1) onCreate():当Activity首次创建时调用,用于进行一些初始化操作,例如加载布局、初始化变量等。

2) onStart():当Activity可见但还无法与用户进行交互时调用,例如在onCreate()之后。

3) onResume():当Activity开始与用户进行交互时调用,此时Activity处于活动状态。

4) onPause():当Activity失去焦点但仍然可见时调用,例如在打开对话框或另一个Activity时。

5) onStop():当Activity不再可见时调用,通常发生在其他Activity启动时。

6) onDestroy():当Activity即将被销毁时调用,用于释放资源、保存状态等操作。

2. Activity之间的通信在Android应用程序中,不同的Activity之间需要进行数据和状态的传递。

这可以通过Intent来实现,通过putExtra()方法将数据绑定到Intent上,然后通过startActivity()方法启动另一个Activity并传递数据。

另外,还可以通过startActivityForResult()方法启动另一个Activity,并在其返回结果时获取数据。

3. Activity的启动模式Android提供了多种Activity的启动模式,包括standard、singleTop、singleTask和singleInstance。

每种启动模式都有不同的特点和适用场景,开发者可以根据实际情况选择合适的启动模式。

Activity与其生命周期简介

Activity与其生命周期简介

一、什么是activityActivity 是用户接口程序,原那么上它会提供给用户一个交互式的接口功能。

它是应用程序的大体功能单元。

Activity 本身是没有界面的,因此activity类创建了一个窗口,开发人员能够通过setContentView(View)接口把UI放到activity创建的窗口上,当activity指向全屏窗口时,也能够用其他方式实现:作为漂浮窗口(通过windowIsFloating 的主题集合),或嵌入到其他的activity(利用ActivityGroup)。

activity是相对(其它activity)独立的,用于处置用户操作,几乎所有的activity都要和用户打交道。

二、Activity 的生命周期在中,Activity 的生命周期交给系通通一治理。

安装在android 中的所有的Activity 都是平等的。

Activity 的状态及状态间的转换在android 中,Activity 拥有四种大体状态:Active/Runing一个新Activity 启动入栈后,它在屏幕最前端,处于栈的最顶端,现在它处于可见并可和用户交互的激活状态。

Paused 当Activity 被另一个透明或Dialog 样式的Activity 覆盖时的状态。

现在它仍然与窗口治理器维持连接,系统继续保护其内部状态,因此它仍然可见,但它已经失去了核心故不可与用户交互。

Stoped 当Activity 被另外一个Activity 覆盖、失去核心并非可见时处于Stoped状态。

Killed Activity 被系统杀死回收或没有被启动时处于Killed状态。

当一个Activity 实例被创建、销毁或启动另外一个Activity 时,它在这四种状态之间进行转换,这种转换的发生依托于用户程序的动作。

以下图说明了Activity 在不同状态间转换的机会和条件:图1. Activity 的状态转换如上所示,Android 程序员能够决定一个Activity 的“生”,但不能决定它的“死”,也就时说程序员能够启动一个Activity,可是却不能手动的“终止”一个Activity。

Activity的生命周期

Activity的生命周期

Activity的生命周期好好理解Activity的生命周期是非常重要的。

可以确保你的应用程序给用户提供一个完美的用户体验并适当的管理资源。

和前面介绍Application一样,Application不能自己控制自己的进程生命周期,Android系统运行时会管理每一个应用程序的进程,包括在应用程序里面的所有Activity。

当运行时需要终止并管理一个Activity的进程,这个Activity的状态会决定它所在的父应用程序的优先级。

接着,应用程序的优先级也会影响运行时,可能会终止该应用程序。

Activity 栈每一个Activity的状态会决定它在Activity栈中的位置,按照先进后出的方式组织现在所运行的所有的Activity,当一个新Activity启动时,当前位于前台的屏幕的将会移动到栈顶,如果用户点击了退后按钮,或者这个前台的Activity关闭了,栈中的下一个Activity会移动上来,并且处于活动状态,下图说明了这个过程:根据前面的说明,应用程序的优先级取决于它包含的最高优先级的Activity,当Android的内存管理决定终止哪一个Application以释放资源,也是使用这个栈决定建立在这些Activity上面的应用程序的优先级。

Activity 状态一个Activity从建立到销毁也就是移入到移出栈,这个过程通常可能包含以下四个状态:1、Active 获得状态,当一个Activity位于栈顶并显示在前台,等待获得用户输入命令,Android系统会尝试付出所有可能的资源保证它的运行,必要时会杀死一些在栈中位于比较靠后的一些Activity,以确保它需要的资源,当另外一个Activity变成Active状态,那么这个将会进入暂停状态。

2、Paused 暂停状态,有些情况下,你的应用程序会可见,但是不是获得用户输入的焦点,这种情况就是进入了暂停状态,出现这种状态也是是有一个半透明的或者不是全屏的Activity在它前面处于获得状态,当进入暂停状态,它会和处于获得状态一样对待,只是它不能获得用户的输入而已。

Activity生命周期概述

Activity生命周期概述

onStart() onRestart() onResume()
否 否 否
onPause()

onStop()

onDestroy()

在Activity被终止前,即进入非活动状态前,该函数被调用。
Activity状态保存/恢复事件回调函数
是否 可终 止 onSaveInstance 否 State()

Bundle是能够保存多种格式数据的对象 在onSaveInstanceState()保存在Bundle中的数据,系统在调 用onRestoreInstanceState()和onCreate()时,会同样利用 Bundle将数据传递给函数
4.3 Activity 生命周期


活动状态:位于前台,可见状态 暂停状态: 其它Activity位于前台,该Activity 依然可见,不能获得焦点 停止状态:不可见,失去焦点 销毁状态: 结束
onCreate
6
onRestart
onDestroy
前台生命周期 可视生命周期 完全生命周期
Activity生命周期分类

可视生命周期

可视生命周期是Activity在界面上从可见到不可见的过程 ,开始于onStart(),结束于onStop()
1 2 3
onRestore InstanceState
activity的生命周期可分为前台生命周期可视生命周期和完全生命周期每种生命周期中包含不同的事件回调函数oncreateondestroyonstartonstoponresumeonpauseonrestoreinstancestateonsaveinstancestateonrestart前台生命周期可视生命周期完全生命周期完全生命周期是从activity建立到销毁的全部过程始于oncreate结束于ondestroy使用者通常在oncreate中初始化activity所能使用的全局资源和状态并在ondestroy中释放这些资源在一些极端的情况下android系统会不调用ondestroy函数而直接终止进程oncreateondestroyonstartonstoponresumeonpauseonrestoreinstancestateonsaveinstancestateonrestart前台生命周期可视生命周期完全生命周期可视生命周期是activity在界面上从可见到不可见的过程开始于onstart结束于onstoponcreateondestroyonstartonstoponresumeonpauseonrestoreinstancestateonsaveinstancestateonrestart前台生命周期可视生命周期完全生命周期onstop一般用来暂停或停止一切与更新用户界面相关的线程计时器和服务onrestart函数在onsart前被调用用来在activity从不可见变为可见的过程中进行一些特定的处理过程onstart和onstop也经常被用来注册和注销broadcastreceiver前台生命周期是activity在屏幕的最上层并能够与用户交互的阶段开始于onresume结束于onpause在activity的状态变换过程中onresume和onpause经常被调用因此这两个函数中应使用更为简单高效的代码10在onpause返回后onstop和ondestroy随时能被android系统终止onpause常用来保存持久数据如界面上的用户的输入信息等oncreateondestroyonstartonstoponresumeonpauseonrestoreinstancestateonsaveinstancestateonrestart前台生命周期可视生命周期完全生命周期11这两个函数都可

Activity之生命周期

Activity之生命周期

Activity之⽣命周期Activity 之⽣命周期本⽂内容:1. Activity 介绍2. Activity 的⽣命周期2.1 ⽣命周期图2.2 常见情况下⽣命周期的回调2.3 关于⽣命周期常见问题2.4 异常状态下活动的⽣命周期2.4.1 资源配置改变导致 Activity 重建2.4.2 低优先级 Activity 由于内存不⾜被杀死2.5 异常情况下的处理2.5.1 数据保存2.5.2 防⽌重建3. 关于 Activity 的不常⽤的回调⽅法3.1 onPostCreate()3.2 onPostResume()3.3 onContentChanged()3.4 onUserInteraction()3.5 onUserLeaveHint()1. Activity 介绍 Activity 是 Android 的四⼤组件之⼀,主要⽤于提供窗⼝与⽤户进⾏交互。

2. Activity 的⽣命周期2.1 ⽣命周期图 官⽹的 Activity 的⽣命周期图: 解释图中个⽅法的作⽤:⽣命周期⽅法作⽤说明onCreate 表⽰Activity正在被创建activity 被创建时调⽤,⼀般在这个⽅法中进⾏活动的初始化⼯作,如设置布局⼯作、加载数据、绑定控件等。

onRestart 表⽰Activity正在重新启动这个回调代表了 Activity 由完全不可见重新变为可见的过程,当 Activity 经历了 onStop() 回调变为完全不可见后,如果⽤户返回原 Activity,便会触发该回调,并且紧接着会触发 onStart() 来使活动重新可见。

onStart 表⽰Activity正在被启动经历该回调后,Activity 由不可见变为可见,但此时处于后台可见,还不能和⽤户进⾏交互。

onResume 表⽰Activity已经可见已经可见的 Activity 从后台来到前台,可以和⽤户进⾏交互。

onPause 表⽰Activity正在停⽌当⽤户启动了新的 Activity ,原来的 Activity 不再处于前台,也⽆法与⽤户进⾏交互,并且紧接着就会调⽤ onStop() ⽅法,但如果⽤户这时⽴刻按返回键回到原 Activity ,就会调⽤ onResume() ⽅法让活动重新回到前台。

Activity生命周期详解

Activity生命周期详解

Activity⽣命周期详解三个循环提供两个关于Activity的⽣命周期模型图⽰帮助理解:图1图2从图2所⽰的Activity⽣命周期不难看出,在这个图中包含了两层循环,第⼀层循环是onPause -> onResume -> onPause,第⼆层循环是onStop -> onRestart -> onStart -> onResume -> onPause -> onStop。

我们可以将这两层循环看成是整合Activity⽣命周期中的⼦⽣命周期。

第⼀层循环称为焦点⽣命周期,第⼆层循环称为可视⽣命周期。

也就是说,第⼀层循环在Activity焦点的获得与失去的过程中循环,在这⼀过程中,Activity始终是可见的。

⽽第⼆层循环是在Activity可见与不可见的过程中循环,在这个过程中伴随着Activity的焦点的获得与失去。

也就是说,Activity⾸先会被显⽰,然后会获得焦点,接着失去焦点,最后由于弹出其他的Activity,使当前的Activity变成不可见。

因此,Activity有如下3种⽣命周期:1. 整体⽣命周期:onCreate -> ... ... -> onDestroy。

2. 可视⽣命周期:onStop -> ... ... -> onPause。

3. 焦点⽣命周期:onPause -> onResume。

四个阶段上⾯7个⽣命周期⽅法分别在4个阶段按着⼀定的顺序进⾏调⽤,这4个阶段如下:1. 开始Activity:在这个阶段依次执⾏3个⽣命周期⽅法:onCreate、onStart和onResume。

2. Activity失去焦点:如果在Activity获得焦点的情况下进⼊其他的Activity或应⽤程序,这时当前的Activity会失去焦点。

在这⼀阶段,会依次执⾏onPause和onStop⽅法。

3. Activity重新获得焦点:如果Activity重新获得焦点,会依次执⾏3个⽣命周期⽅法:onRestart、onStart和onResume。

AndroidActivity的生命周期与启动模式全面解读

AndroidActivity的生命周期与启动模式全面解读

AndroidActivity的⽣命周期与启动模式全⾯解读⽬录Activity概述Activity⽣命周期⽣命周期的调⽤顺序演⽰Activity的启动模式启动模式的设置standard(默认standard)singleTopsingleTasksingleInstanceActivity概述• Activity(活动)是Android应⽤程序中最基本的组成单位。

• Activity主要负责创建显⽰窗⼝,⼀个Activity对象通常就代表了⼀个单独的屏幕。

• Activity是⽤户唯⼀可以看得到的组件,⽤来与⽤户进⾏交互的。

• Activity是通过⼀个Activity栈来进⾏管理,当前显⽰的Activity被放到栈顶。

Activity⽣命周期⽣命周期的调⽤顺序⼀、启动activity,然后按返回键退出。

onCreate()->onStart()->onResume()onPause()->onStop()->onDestory()⼆、启动activity,按Home键显⽰桌⾯,再点程序图标进⼊应⽤程序。

onCreate()->onStart()->onResume()onPause()->onStop()onRestart()->onStart()->onResume()三、启动activityA,再启动activityBAonCreate()->AonStart()->AonResume()AonPause()BonCreate()->BonStart()->BonResume()演⽰package com.qingsu.yingguday06;import androidx.appcompat.app.AppCompatActivity;import ponentName;import android.content.Intent;import android.os.Bundle;import android.util.Log;import android.view.View;import android.widget.Button;public class MainActivity extends AppCompatActivity implements View.OnClickListener { private Button mBtIntent,mBtIntentOne,mBtIntentTwo,mBtIntentThree;@Overrideprotected void onCreate(Bundle savedInstanceState) {Log.d("TAG","onCreate");super.onCreate(savedInstanceState);setContentView(yout.activity_main);initView();mBtIntent.setOnClickListener(this);}private void initView(){mBtIntent = findViewById(R.id.bt_intentmain);}@Overrideprotected void onStart() {Log.d("TAG","onStart");super.onStart();}@Overrideprotected void onResume() {Log.d("TAG","onResume");super.onResume();}@Overrideprotected void onPause() {Log.d("TAG","onPause");super.onPause();}@Overrideprotected void onStop() {Log.d("TAG","onStop");super.onStop();}@Overrideprotected void onRestart() {Log.d("TAG","onRestart");super.onRestart();}@Overrideprotected void onDestroy() {Log.d("TAG","onDestroy");super.onDestroy();}@Overridepublic void onClick(View v) {switch (v.getId()){case R.id.bt_intentmain:startActivity(intent);;break;default:break;}}}package com.qingsu.yingguday06;import androidx.appcompat.app.AppCompatActivity;import android.content.Intent;import android.os.Bundle;import android.util.Log;import android.view.View;import android.widget.Button;public class HomeActivity extends AppCompatActivity {Button mBtHome,mBtIntentB;@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);Log.d("TAG","BonCreate");setContentView(yout.activity_home);setTitle("页⾯B");mBtHome = findViewById(R.id.bt_intenthome);mBtIntentB = findViewById(R.id.bt_intentB);mBtHome.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {Intent intent = new Intent(HomeActivity.this,MainActivity.class); startActivity(intent);}});mBtIntentB.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {Intent intent = new Intent(HomeActivity.this,HomeActivity.class); startActivity(intent);}});}@Overrideprotected void onStart() {Log.d("TAG","BonStart");super.onStart();}@Overrideprotected void onResume() {Log.d("TAG","BonResume");super.onResume();}@Overrideprotected void onPause() {Log.d("TAG","BonPause");super.onPause();}@Overrideprotected void onStop() {Log.d("TAG","BonStop");super.onStop();}@Overrideprotected void onRestart() {Log.d("TAG","BonRestart");super.onRestart();}@Overrideprotected void onDestroy() {Log.d("TAG","onDestroy");super.onDestroy();}}Activity的启动模式standard(默认standard)、singleTop、singleTask、singleInstance 启动模式的设置清单⽂件中在活动声明中加⼊launchMode属性默认为standard⽅式 android:launchMode="singleTask"<activity android:name=".MainActivity"android:launchMode="singleTask"><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="UNCHER" /></intent-filter></activity>standard(默认standard)⼀直⼊栈⼀直创建新的ActivitysingleTop当前页⾯中创建当前页⾯不会新创建ActivitysingleTask当Activity存在则会将其置顶,Activity上⾯的栈则会被弹出!即Activity上⾯的Activity会销毁!singleInstance每⼀个Activity都是唯⼀的当Activity存在不会新建新的Activity到此这篇关于Android Activity的⽣命周期与启动模式全⾯解读的⽂章就介绍到这了,更多相关Android Activity 启动模式内容请搜索以前的⽂章或继续浏览下⾯的相关⽂章希望⼤家以后多多⽀持!。

Android笔记:组件生命周期

Android笔记:组件生命周期

Android应用程序组件中有一个生命周期,贯穿于创建到结束的整个周期。

周期里面含有各种状态,这些状态对组件的生命周期起着至关重要的影响。

一、Activity生命周期1.Activity有三个状态(1)活动(active)或称运行(running):屏幕前台的Activity (当前任务中栈顶的Activity),用来处理当前用户的请求。

(2)暂停(paused):指当前运行的Activity在屏幕上失去焦点但却对用户是可见的,也就是说用户能看得到它的界面,不过他是被当前Activity挡住了。

暂停状态下的Activity仍是存活的(维持着所有状态和成员信息,屏幕上还会有它的窗体)。

当前系统资源处于极度缺乏的情况下,这个状态下的Activity就会被干掉。

(3)停止(stopped):屏幕不再有它的窗体,但是它仍然保留着所有状态和成员信息。

通常当系统其它地方需要更多的内存时,这个Activity就会被干掉。

2.如果一个Activity处于暂停或停止状态时,系统要么从内存中清除它要么调用它的finish()销毁它或是简单地干掉它的进程。

当用户再次调用了这个Activity,它就会重新开始并保存住先前的状态。

3.Activity的生命周期的转变本质上是其内部状态间的转变,Android提供了如下几个protect方法:Java代码1.void onCreate(Bundle savedInstanceState)2.void onStart()3.void onRestart()4.void onResume()5.void onPause()6.void onStop()7.void onDestroy()4.以上方法均属钩子方法,我们需要重写它们,以使状态改变时做出恰当的行为。

所有的Activity必须要重写onCreate(),因为这个方法用来做初始化和组装Activity的工作。

大多数情况下,最好也要重写onPause()方法,主要是针对用户发出停止请求的情况下,我们需要在这个方法里面做一些处理(这一点很重要,下面会有所解释)。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

学习并掌握Activity生命周期,对从事Android开发(或者打算日后从事这方面的开发工作)的朋友来讲,是至关重要的。

本文将用图解和实例的方式,向大家详细讲解Activity 生命周期的有关知识。

Activity有三个状态:1.当它在屏幕前台时(位于当前任务堆栈的顶部),它是激活或运行状态。

它就是响应用户操作的Activity。

2.当它上面有另外一个Activity,使它失去了焦点但仍然对用户可见时(如图),它处于暂停状态。

在它之上的Activity没有完全覆盖屏幕,或者是透明的,被暂停的Activity仍然对用户可见,并且是存活状态(它保留着所有的状态和成员信息并保持和窗口管理器的连接)。

如果系统处于内存不足时会杀死这个Activity。

3.当它完全被另一个Activity覆盖时则处于停止状态。

它仍然保留所有的状态和成员信息。

然而对用户是不可见的,所以它的窗口将被隐藏,如果其它地方需要内存,则系统经常会杀死这个Activity。

当Activity从一种状态转变到另一种状态时,会调用以下保护方法来通知这种变化:void onCreate(Bundle savedInstanceState)void onStart()void onRestart()void onResume()void onPause()void onStop()void onDestroy()这七个方法定义了Activity的完整生命周期。

实现这些方法可以帮助我们监视其中的三个嵌套生命周期循环:Activity的完整生命周期自第一次调用onCreate()开始,直至调用onDestroy()为止。

Activity 在onCreate()中设置所有“全局”状态以完成初始化,而在onDestroy()中释放所有系统资源。

例如,如果Activity有一个线程在后台运行从网络下载数据,它会在onCreate()创建线程,而在onDestroy()销毁线程。

Activity的可视生命周期自onStart()调用开始直到相应的onStop()调用结束。

在此期间,用户可以在屏幕上看到Activity,尽管它也许并不是位于前台或者也不与用户进行交互。

在这两个方法之间,我们可以保留用来向用户显示这个Activity所需的资源。

例如,当用户不再看见我们显示的内容时,我们可以在onStart()中注册一个BroadcastReceiver来监控会影响UI的变化,而在onStop()中来注消。

onStart() 和onStop() 方法可以随着应用程序是否为用户可见而被多次调用。

Activity的前台生命周期自onResume()调用起,至相应的onPause()调用为止。

在此期间,Activity位于前台最上面并与用户进行交互。

Activity会经常在暂停和恢复之间进行状态转换——例如当设备转入休眠状态或者有新的Activity启动时,将调用onPause() 方法。

当Activity获得结果或者接收到新的Intent时会调用onResume() 方法。

说了一大堆的理论,下面一起动手来开发一个小实例,帮助大家快速理解。

不妨试着动手去敲代码,然后自己监控控制台上的日志记录。

先贴出Activity部分的代码:最先是一个MainActivity,这个也是软件启动时默认打开的。

package cn.itcast.life;import android.app.Activity;import android.content.Intent;import android.os.Bundle;import android.util.Log;import android.view.View;import android.widget.Button;public class MainActivity extends Activity {private static final String TAG = "MainActivity";@Overridepublic void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);setContentView(yout.main);Log.i(TAG, "onCreate()");Button button = (Button) this.findViewById(R.id.button);button.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {Intent intent = new Intent(MainActivity.this, OtherActivity.class); startActivity(intent);}});Button threebutton = (Button) this.findViewById(R.id.threebutton); threebutton.setOnClickListener(new View.OnClickListener() {@Overridepublic void onClick(View v) {Intent intent = new Intent(MainActivity.this, ThreeActivity.class); startActivity(intent);}});}@Overrideprotected void onDestroy() { Log.i(TAG, "onDestroy()"); super.onDestroy();}@Overrideprotected void onPause() { Log.i(TAG, "onPause()"); super.onPause();}@Overrideprotected void onRestart() { Log.i(TAG, "onRestart()"); super.onRestart();}@Overrideprotected void onResume() { Log.i(TAG, "onResume()");super.onResume();}@Overrideprotected void onStart() {Log.i(TAG, "onStart()");super.onStart();}@Overrideprotected void onStop() {Log.i(TAG, "onStop()");super.onStop();}}MainActivity所匹配的xml布局文件:<?xml version="1.0" encoding="utf-8"?><LinearLayout xmlns:android="/apk/res/android" android:orientation="vertical"android:layout_width="fill_parent"android:layout_height="fill_parent"><TextViewandroid:layout_width="fill_parent" android:layout_height="wrap_content" android:text="@string/hello"/><Buttonandroid:layout_width="wrap_content" android:layout_height="wrap_content" android:text="打开OtherActivity" android:id="@+id/button"/><Buttonandroid:layout_width="wrap_content" android:layout_height="wrap_content" android:text="打开ThreeActivity" android:id="@+id/threebutton"/></LinearLayout>下面将是一个新的Activity,为了验证“onstop”方法,我们要用这个OtherActivity将前面的MainActivity覆盖掉。

package cn.itcast.life;import android.app.Activity;import android.os.Bundle;public class OtherActivity extends Activity {@Overrideprotected void onCreate(Bundle savedInstanceState) {// TODO Auto-generated method stubsuper.onCreate(savedInstanceState);setContentView(yout.other);}}<?xml version="1.0" encoding="utf-8"?><LinearLayoutxmlns:android="/apk/res/android"android:orientation="vertical"android:layout_width="fill_parent"android:layout_height="fill_parent"><TextViewandroid:layout_width="fill_parent"android:layout_height="wrap_content"android:text="这是OtherActivity"/></LinearLayout>还有一个Activity,是用于测试onpause方法的。

相关文档
最新文档