当用户按下HOME 键的时候,回到了应用程序加载器,然后选择了一个新的应用程序(也就是一个新任务)。则当前任务遁入后台,而新任务的根activity 显示出来。...当用户按下BACK 键的时候,屏幕不会显示出用户刚才离开的activity(上一个任务的根activity)。...只是对用户不可见,当其他地方需要内存时它往往被系统杀掉 4.Dead——非活动状态 Activity 尚未被启动、已经被手动终止,或已经被系统回收时处于非活动的状态,要手动终止Activity...当系统而不是用户自己出于回收内存时,关闭了activity 之后。用户会期望当他再次回到这个activity 的时候,它仍保持着上次离开时的样子。...()开始直到调用onDestroy()结束 2.Activity的可视生命周期:从调用onStart()到相应的调用onStop()。
一个activity可以频繁的在resumed状态和paused状态之间切换—例如当设备休眠时activity处于paused,所以activity的onResume和onPause方法中应该是一些轻量级的代码...如果activity被隐藏hidden则接下来会调用onStop方法 onResume() 当activity可以开始于用户交互即activity获取到焦点时会调用该方法。...从Android3.0开始发生了改变。应用只有在onStop方法返回后才能被killable。...多任务栈可以被系统保存,但是如果同时运行多个任务栈的话在内存不足时后台任务栈很容易被系统杀死,此时activity的状态就会丢失。所以要及时保存activity的状态。...Clearing:清除任务栈 如果用户离开任务栈很长时间,系统会将任务栈中除了根activity之外的所有activity都清除掉,当系统再次开启该任务栈时只能恢复根activity的状态。
一个Activity本质上只有三种状态: Resumed(运行)、Paused(暂停)、Stopped(停止),因为从Activity被创建之后,它只可能在这三种状态保持长久的停留,其他的回调方法结束后的状态都只能称之为过渡状态...比如进入到onStart方法后,执行完该方法,会立即进入到OnResume方法。...它仍然保持着自身的所有实例和状态,所以根本不用担心它在返回到onResume方法时,实例会变为null,或者控件的事件监听不了(我以前就担心过这个问题)。...即便是内存不足,被回收了,再次Recreate的话,又是一次新的生命周期的开始,又会执行onCreate方法。...当然相应的需要在onResume中重启或初始化等等。 有时候也需要在onPause判断用户是调用finish结束这个Activity,还是暂时离开,以便区分处理。
此时,Activity仍然会保留在内存中,保存所有状态信息,然而当系统的其他地方要求使用使用内存时,会优先终止此类状态的Activity。 · 非活动状态:Activity被终止。...此时Activity已经从栈中移除了。 3、监控状态改变 为了保证Activity可以对状态改变做出反应,Android提供了一系列的回调方法,当Activity的状态改变时它们就会被触发。...38 super.onResume(); 39 /* 40 * 恢复Activity需要,但是当它处于不活动状态时被挂起的暂停的UI更新、线程或进程...更新、线程或处理 71 * 当Activity不可见时,保存所有的编辑或者状态改变,因为在调用这个方法后,京城可能会被终止 72 */ 73 } 74 75...尽量让onPause和onResume方法中的代码执行迅速,尽可能少。以保证前后台切换时能够保持响应。 onResume方法可以是轻量级的。
系统中通常有很多这样的进程在运行,因此要将这些进程保存在 LRU 列表中,以确保当内存不足时用户最近看到的进程最后一个被杀死。 (5)空(Empty)进程 不包含任何处于活动状态的应用程序组件。...运行活动的情景:当一个活动被启动时,活动中的 onCreate()、onStart()和 onResume()这 3 个方法被依次调用,活动对应的界面出现在屏幕上。...在转入后台时,onStop()是否被调用取决于活动是否被完全覆盖,在新的活动有透明部分时,转入后台的活动依然“可见”,其他情况下(较多数的情况)活动均进入不可见状态(被完全覆盖)。...活动被恢复的情景:当界面上最前面的活动退出后,它所覆盖的活动将被恢复,这时 onResume()方法将被调用,活动重新转入前台运行。...广播接收器只有在这个方法的执行过程中才处于活动状态,当 onReceive()返回后,广播接收器将不再处于活动状态。广播接收器的功能类似于一个回调函数,只是单次运行时处于活动状态。
当你查看一个Java项目时你肯定想到的是从它的入口函数main()开始,一步一步的深入去看这个项目的逻辑是怎么展开的,查看Android项目也不例外,但是它的入口不是main函数,而是主Activity...当用户离开应用程序的时候Android系统会调用Activity的onPause()、onStop()、onDestroy()方法,一步一步从金字塔顶层退下来,在从顶层退下来的时候也可以从新回到顶层。...Stopped状态: 在这个状态Activity完全被隐藏,对于用户是不可见的状态,应用程序在后台。进入这个状态时,Activity的状态信息要被保留下来。...对于其他状态只是短暂的停留,不如系统调用onCreate()后,它迅速调用onStart(),紧接着onResume()。...)或者无响应(ANR); 在用户不再使用你的应用时,及时释放掉你应用程序占用的系统资源,比如在程序进入后台时要停掉一些不必要的线程; 在用户离开你的应用的时候要保存用户当前的状态,再用户再次回到你的应用的时候恢复之前的状态
onCreate(Bundle)是你初始化活动的地方,而onPause()是你处理用户离开你的活动的地方。...生命周期:在整个的生命周期,从onCreate(Bundle)开始到onDestroy()结束。从onStart()开始到onStop()结束。从onResume()开始到onPause(()结束。...singleTop是在启动活动时如果发现返回栈的栈顶已经是该活动,则认为可以直接使用它。 singleTask是如果每次启动时系统首先会在返回栈中检查是否存在该活动的实例。...12.Android 泄露的那些事? 内存泄漏简单地说,申请了一块内存空间,使用完毕后没有释放掉。 它的一般表现是:程序运行时间越长,占用内存越多,最终用尽全部内存,导致整个系统崩溃。...内存泄漏的的原因: 数据库没有关闭游标cursor 构造Adapter时,没有使用 convertView Bitmap对象不在使用时,调用recycle()释放内内存对象被生命周期长的对象引用。
ANR的类型 用户输入事件处理超时 当应用程序的窗口处于活动状态并且能够接收输入事件(例如按键事件、触摸事件等)时,系统底层上报的事件就会被InputDispatcher分发给该应用程序。...应用程序的主线程通过InputChannel读取输入事件并交给界面视图处理,界面视图是一个树状结构,DecorView是视图树的根,事件从树根开始一层一层向端点(例如一个 Button)传递。...当应用程序的窗口处于“活动状态”并且能够接收输入事件时,系统底层上报的事件就会被InputDispatcher分发给该应用程序。...广播超时 当应用程序主线程在执行BroadcastReceiver的onReceive方法时,超时没有执行完毕,就会报出广播超时类型的ANR。对于前台进程超时时间是10秒,后台进程超时时间是60秒。...如果一个应用恰好在开始执行OnReceive方法时被LMK杀死,那么在60秒后BoardcastQueue检查广播处理情况时此应用就一定会发生ANR。
,系统可以将它从内存移除,通过要求它结束(通过调用它的finish()方法),或简单地杀掉它的进程。...将他们合并在一起,这七个方法定义了活动的整个生命周期。有三个嵌套的循环,你可以通过这七个方法监视: 活动的整个生命时间,从第一次调用onCreate()开始直到调用onDestroy()结束。...活动的前台生命时间,从调用onResume()到相应的调用onPause()。...在这期间,频繁地在重用和暂停状态转换——例如,当设备进入睡眠状态或一个新的活动启动时调用onPause(),当一个活动返回或一个新的意图被传输时调用onResume()。...因此,这两个方法的代码应当是相当轻量级的。 下面这个图解释了这三个循环和状态之间状态的可能路径。着色的椭圆表示活动的主要状态,矩形表示当活动在状态之间转换时你可以执行的回调方法。 ?
theme: channing-cyan OverView模式 多窗口模式,大屏幕设备可以打开两个应用程序窗口 Data Saver 流量保护机制。...支持Java8 Java8的支持使得可以在Android开发者使用Lambda表达式 后台省电 屏幕关闭后后台进程将会被系统限制活动。...上,当点击我们的App时,onResume才会执行,当操作另外一个界面又会走onPause。...退出多窗口模式回到我们的App: OnStop OnDestory onCreate onStart onResume onPause onResume App会经历一次销毁重建后再次失去焦点获取焦点。...这个功能还有助于减少整个 RAM 占用,包括关联的二进制文件。 此功能对于低内存设备非常有意义。同时,它可以最大程度降低对设备电池的影响,能够使系统更省电,因为仅当设备处于空闲状态和充电时才进行编译。
OnResume():在Activity将开始与用户互动时调用。此时,您的Activity位于Activity堆栈的顶部,而用户输入也进入了活Activity堆栈。...OnPause():当Activity进入后台但尚未被杀死时,被称为Activity生命周期的一部分。 OnStop():不再对用户可见时调用。 OnDestroy():Activity结束时调用!...在 Activity 生命周期中,无论是在应用程序启动时,还是在Activity 被销毁然后重新创建(例如在配置更改期间)时,都会调用一次 onCreate() 方法。...15、面试官:什么是(ANR)错误,如何防止它在应用程序中发生? 应聘者:当 UI 停止响应超过5秒以上时,通常会因为已阻塞主线程而出现 ANR 对话框。...但是通过这种方式,当您到达列表的末尾时,将创建100个视图,并且的内存使用情况将与第一种方法相同。创建视图需要花费时间,因此您的滚动很可能不会很流畅。
,运行,停止,销毁等正常的生命周期过程 ---- // 总结 当Activity启动时,依次会调用onCreate(),onStart(),onResume(),而当Activity退居后台时(...当Activity重新回到前台(从桌面回到原Activity或者被覆盖后又回到原Activity)时,onRestart(),onStart(),onResume()会依次被调用。...当然从流程图,我们也可以看出当Activity停止后(onPause方法和onStop方法被调用),重新回到前台时也会调用onResume方法,因此我们也可以在onResume方法中初始化一些资源,比如重新初始化在...但通过流程图我们还可以看到一种情况是onPause方法执行后直接执行了onResume方法,这属于比较极端的现象了,这可能是用户操作使当前Activity退居后台后又迅速地再回到到当前的Activity...前台生存期:活动在onResume()方法和onPause()方法之间所经历的,这个生存期内,活动总是处于运行状态,此时的活动是可以和用户进行相互的,我们平时看到和接触最多的也是这个状态下的活动。
Activity 的 onStop() , 否则上个页面就不显示了 ) 1.2 横竖屏切换时 不设置 Activity 的 android:configChanges 时,切屏会重新调用各个生命周期...Activity 退居后台: 且系统内存不足, 系统会杀死这个后台状态的 Activity ,若再次回到这个 Activity ,则会走 onCreate() --> onStart() —> onResume...3.2 内存不足时系统会杀掉后台的Activity,若需要进行一些临时状态的保存,在哪个方法进行 Activity 的 onSaveInstanceState() 和 onRestoreInstanceState...一个进程满足下面任何一个条件都被认为是可视的: 寄宿着一个不是前台的活动,但是它对用户仍可见(它的 onPause() 方法已经被调用)。...5.4 后台进程 后台进程是一个保持着一个当前对用户不可视的活动(已经调用 Activity 对象的 onStop() 方法)(如果还有除了 UI 线程外其他线程在运行话,不受影响)。
(3)onStart() 表示Activity正在被启动 即将开始 这是Activity已经可见 但还没出现在前台 还无法与用户交互 (4)onResume 表示Activity已经可见了 并出现在前台并已经开始活动...onRestart->onStart->onResume (4)当用户back键回退时 onPause-> onStop->onDestroy (5)当Activity被系统回收后再次打开 生命周期回调过程和...是配对的随着用户的操作或者设备的屏幕点亮和熄灭这两个方法可能被调用多次 从Activity是否在前台来说 onResume和onPause是配对的随着用户操作或者设备的点亮和熄灭这两个方法可能被调用多次...Activity状态 在重新创建后系统会调用onRestoreInstanceState并把Activity销毁时onSaveInstanceState方法保存的Bundle对象作为参数同时传递给onRestoreInstanceState...和onCreate onSaveInstanceState在onStop之前调用 和onPause没有时序的关系 onRestoreInstanceState在onStart之后调用 情况2资源内存不足导致低优先级的
onResume() 系统会在Activity开始与用户互动之前调用此回调方法。此时,该Activity位于Activity堆栈的顶部,并会捕获所有用户输入。...onPause()执行完毕后,下一个回调方法为onStop()或onResume(),具体取决于 Activity进入“已暂停”状态后发生的情况。...onRestart() 当处于“已停止”状态的Activity即将重启时,系统就会调用此回调。onRestart() 会从 Activity停止时的状态恢复Activity。...活动不仅会被销毁,还会从返回堆栈中移除。...多次调用时,是否会因销毁不当,引发内存泄漏的问题。
activity activity从开始到结束的四个状态。 activity的生命周期。 activity的进程优先级。...当一个Activity处于暂停状态或停止状态时就随处可能进入死亡状态,因为系统可能因内存不足而强行结束该Activity。...方法调用注意事项 : 用户主动销毁不会调用 : 当用户点击回退键 或者 调用了 finish() 方法, 不会调用该方法; 调用时机不固定 : 该方法一定是在 onStop() 方法之前调用,...(Bundle outState): 方法回调时机 : 在 Activity 被系统销毁之后 恢复 Activity 时被调用, 只有销毁了之后重建的时候才调用, 如果内存充足, 系统没有销毁这个 Activity...后台进程: activity的onStop()被调用,但是onDestroy()没有调用的状态。该进程属于后台进程。
(3)stoped:完全被另一个Activity遮挡时处于停止状态,它仍然在内存中保留着所有的状态和成员信息。只是对用户不可见,当其他地方需要内存时它往往被系统杀掉。...4、android三个嵌套循环 (1)Activity完整的生命周期:从第一次调用onCreate()开始直到调用onDestroy()结束。...它的生命周期为从回调onReceive()方法开始到该方法返回结果后结束。...6、Service服务生命周期 Service完整的生命周期从调用onCreate()开始直到调用onDestroy()结束。...onDestroy() 每一个Activity都处于某一个状态,对于开发者来说,是无法控制其应用程序处于某一个状态的,这些均由系统来完成。
collectAsStateWithLifecycle 允许您的应用在不需要时保存应用资源,例如当应用在后台时。 不必要地保持资源活动可能会影响用户的设备运行状况。...在后台保持资源活跃 Android 应用程序可以在无数的 Android 设备上运行。不幸的是,并非所有设备和所有用户都拥有无穷无尽的资源。应用程序通常在受限环境中运行。...如果被滥用,用户可能会卸载您的应用。 数据使用:在未连接到 Wi-Fi 时减少应用程序中的网络流量可以帮助用户节省资金。 内存使用:应用程序如何使用内存会对设备的整体稳定性和性能产生非常大的影响。...根据设备类型和设备运行的 Android 版本,保持不需要的资源处于活动状态可能会产生负面影响。...即使 Compose 在 Android 应用程序处于后台时停止重新组合,collectAsState 也会使集合保持活动状态。 这使得层次结构的其余部分无法释放资源。
一旦activity从paused状态回到resumed状态,就会调用onResume方法。当用户调用onPause方法后,很大的概率将要导致用户离开APP,这也就暗示着会相继发生onStop方法。...Note: 当activity进入paused状态后,它之前所初始化的组件信息是存储在内存中的,并不会消失,因此也无需在onResume()方法中重新进行初始化。...不然,视图组件的状态,系统其实会自动记录在内存中,如在editText中,编写的用户数据,完全不需要保存,当用户从stopped状态回到resumed状态后,editText里的内容由系统自动调用。...o(︶︿︶)o Destroyed状态总结: Destroyed发生的场景: 用户操作返回按钮后。 在程序中调用finish方法。...app进入stopped状态后,用户长时间并没有唤醒app,系统清理内存时,自动关闭它。
紧接着onStop方法就会被调用,我们可以进行一些轻量级的存储数据和去初始化的工作,不能太耗时,因为在跳转Activity时只有当一个Activity执行完了onPause方法后另一个Activity才会启动...onRestart:restart表示重新开始,Activity在这时可见,当用户按Home键切换到桌面后又切回来或者从后一个Activity切回前一个Activity就会触发这个方法。...在系统内存不足的时候可能不会执行onStop方法,因此程序状态的保存、独占设备和动画的关闭、以及一些数据的保存最好在onPause中进行,但要注意不能太耗时。...按照生命周期图的表示,如果用户在切换Activity的过程中再次切回原Activity,是在onPause方法后直接调用onResume方法的,这样onPause→onStop→onRestart→onStart...,此方法会被调用; 在用户改变屏幕方向时,此方法会被调用; 在当前Activity跳转到其他Activity或者按Home键回到主屏,自身退居后台时,此方法会被调用。
领取专属 10元无门槛券
手把手带您无忧上云