Activity介绍 l对于任何一个Android应用程序来讲,Activity类都是其核心组成部分。许多时候,在应用程序中,你将会为每一个屏幕显示定义和实现一个Activity。...Activity被部分遮挡 当Activity从后台再次被切换到前台来的时候(执行onResume) 在应用进入暂停状态时,onPause回调函数将执行,在onPause中应该执行适当的资源释放任务,比如...当Activity再次启动时 虽然onRestart会执行,但是恢复资源的操作应该写在onStart里面 因为第一次启动Activity是onStart也会执行 重新创建Activity 有时候...Activity时会传回这些信息 •onRestoreInstanceState和onCreate都会得到这些信息 •onCreate在第一次创建时也会执行 •数据的恢复任务应该在onCreate...Activity时会传回这些信息 这时onRestoreInstanceState和onCreate都会得到这些信息 lonCreate在第一次创建时也会执行 所以数据的恢复任务应该在onCreate写更好
Activity介绍 l对于任何一个Android应用程序来讲,Activity类都是其核心组成部分。许多时候,在应用程序中,你将会为每一个屏幕显示定义和实现一个Activity。...,此时当前的Activity被部分遮挡 当Activity从后台再次被切换到前台来的时候(执行onResume) 在应用进入暂停状态时,onPause回调函数将执行,在onPause...,onPause会执行,但是耗时的操作还是应该写在这里 当Activity再次启动时 虽然onRestart会执行,但是恢复资源的操作应该写在onStart里面 因为第一次启动Activity...•onCreate在第一次创建时也会执行 •数据的恢复任务应该在onCreate写更好...在重新启动Activity时会传回这些信息 这时onRestoreInstanceState和onCreate都会得到这些信息 lonCreate在第一次创建时也会执行
在应用程序中至少包含一个用来处理应用程序的主UI功能的主界面屏幕。这个主界面一般由多个Fragment组成,并由一组次要Activity支持。...(savedInstanceState); 7 //初始化Activity并填充UI 8 } 9 10 //在onCreate方法完成后调用,用于恢复UI.../* 40 * 恢复Activity需要,但是当它处于不活动状态时被挂起的暂停的UI更新、线程或进程 41 * 在Activity状态生命周期结束的时候滴啊用,用来保存...当UI再次启动时,可以用onStart或者onRestart方法来恢复或者重启这些进程。 onRestart在除了对onStart方法的第一次调用之外的所有方法之前被立即调用。...Activity被销毁前可能会经历多个活动生存期,在失去焦点是,活动生存期就结束了。尽量让onPause和onResume方法中的代码执行迅速,尽可能少。以保证前后台切换时能够保持响应。
所以通常手机系统的界面一次仅显示一个应用程序窗口,Android使用了Activity的概念来表示界面。 ...Activity生命周期的运行如图: Activity生命周期进程类型 在Android系统中,即使不关掉程序,当应用程序处于某种进程类时,也有可能被系统kill掉。 ...foreground process(前景模式)是当前显示于手机屏幕上的应用程序画面,被定义为前景模式的进程,其中由onCreate()、onStart() 、onResume() 函数调用的Activity...当从Stopped状态回到前景时,首先需要调用onRestart(),这个函数做一些恢复工作,恢复停止但是并没有被销毁的activity;然后系统会接着调用onStart(),因为每次activity变为可见时都要调用...可以把onStart()和onStop()看成一对,因为在一开始启动时和重新启动时都需要做一些初始化工作。
,使用此方法启动时,服务首次启动系 统先调用服务的onCreate()-->onBind(),如果服务已经启动再次调用不会再触发这2个方法,调用者退出时系统会调用服务的 onUnbind()-->onDestory...而当用户按下BACK 键的时候,你的activity 又会再一次的显示在屏幕上,此时任务是由2个应用程序中的相关activity组成的)栈底的是启动整个任务的Activity,栈顶的是当前运行的用户可以交互的...而前一个activity 仍保持在栈之中。当用户按下BACK 键的时候,当前activity 出栈,而前一个恢复为当前运行的activity。...则当前任务遁入后台,而新任务的根activity 显示出来。然后,过了一小会儿,用户再次回到了应用程序加载器而又选择了前一个应用程序(上一个任务)。...3.onRestart() 当Activity已经停止然后重新被启动时,系统会调用 4.onResume(); 当Activity可见且获得用户焦点能交互时,系统会调用
onStart():首次启动Activity时在onCreate()之后被回调,再次启动时在onRestart()之后被回调。此时Activity已经可见但还没出现到前台不能与用户交互。...值得注意的地方: onStart和onResume咋看起来差不多,但有一些细微的差别,onStart表示Activity虽然此时已经可见但并没有完全显示到前台,onResume表示此时已经完全显示到前台了...当ActivityA启动ActivityB时,他们的生命周期方法执行顺序如下: A.onPause->B.onCreate->B.onStart->B.onResume->A.onStop 日志如下:...在横竖屏切换时Activity会先被销毁,然后再重新创建,在销毁时onPause()被调用之后会调用onSaveInstanceState(Bundle bundle),此时我们就有机会将一些需要恢复的信息写入...onRestoreInstanceState()用来恢复一些必要的信息,而它的参数就是我们在onSaveInstanceState写入的参数。
当它再次显示给用户时,必须要完全重新启动和恢复到之前的状态。...() void onResume() void onPause() void onStop() void onDestroy() 所有这些方法都是钩子,你可以重写当状态改变时做适当的工作。...在这期间,用户可以在屏幕上看见活动,虽然它可能不是运行在前台且与用户交互。在这两个方法之间,你可以保持显示活动所需要的资源。...在这期间,频繁地在重用和暂停状态转换——例如,当设备进入睡眠状态或一个新的活动启动时调用onPause(),当一个活动返回或一个新的意图被传输时调用onResume()。...着色的椭圆表示活动的主要状态,矩形表示当活动在状态之间转换时你可以执行的回调方法。 ?
在onCreate方法里,R.layout.activity_main指的就是activity_main.xml。 现在layout中有一个TextView,它可以用来显示文字。...2. onCreate 和 onStart 的区别 activity的状态区别 onCreate在系统首次创建 Activity 时触发。Activity会在创建后进入已创建状态。...一旦此回调结束,Activity 便会进入已恢复状态,系统将调用 onResume() 方法。...但需要注意的是,在 onCreate 取出数据时一定要先判断savedInstanceState 是否为空。...() 当被系统异常销毁的 Activity 被重建时,会调用 onRestoreIntanceState 或 onCreate 方法来恢复,而 onRestoreInstance 与 Oncreate
Android 的一个活动一般对应界面中的一个屏幕显示,可以理解成一个界面,每一个活动在界面上可以包含按钮、文本框等多种可视的 UI 元素。...()方法正在执行); 进程有一个 Service,并且在 Service 的某个方法(Service.onCreate()、Service.onStart()或者 Service.onDestroy()...系统中通常有很多这样的进程在运行,因此要将这些进程保存在 LRU 列表中,以确保当内存不足时用户最近看到的进程最后一个被杀死。 (5)空(Empty)进程 不包含任何处于活动状态的应用程序组件。...运行活动的情景:当一个活动被启动时,活动中的 onCreate()、onStart()和 onResume()这 3 个方法被依次调用,活动对应的界面出现在屏幕上。...活动被恢复的情景:当界面上最前面的活动退出后,它所覆盖的活动将被恢复,这时 onResume()方法将被调用,活动重新转入前台运行。
-> onResume -> onSaveInstanceState(和onPause没有确定的时序关系) -> onStop -> onDestroy -> onCreate -> onStart...关于保存和恢复View层次结构,系统的工作流程是:首先,Activity被意外终止时,Activity会调用onSaveInstanceState保存数据,然后,Activity会委托Window保存数据...可以看到Activity中的onCreate和onRestoreInstanceState中都有Bundle savedInstanceState参数,说明可以在这两个方法中都可以恢复数据,但这两者是有区别的...如果不希望在横竖屏切换时重新创建Activity,可以给Activity指定configChanges属性。 常用的属性值有: locale:设备的本地位置发生了改变,一般指切换了系统语言。...解决方法:为待启动的Activity指定FLAG_ACTIVITY_NEW_TASK标记位,这样在启动时就会为它创建一个新的任务栈,这时启动Activity实际上是以singleTask模式启动的。
在一个应用程序中通常由多个Activity构成。...Activity的启动过程:onCreate—onStart—onResume;下返回键时:onPause—onStop—onDestroy 正如上面说是,当按下返回键时,此Activity弹出栈。...我们再次 打开时的启动过程又回到onCreate—onStart—onResume。OK,启动之后按下Home键。回到Launcher。查看信息打印:onPause—onStop。...onRestart():在 activity 被停止后又一次启动时会调用该方法。其兴许会调用 onStart 方法。 onStart()à当 activity 对于用户可见前即调用这种方法。...由于这个原因,你的 activity 能否在其又一次创建时完毕保存状态就显得尤为重要,由于用户常常会在使用应用程序时旋转屏幕的。
具体调用场景 假定为Activity A显示在当前Activity栈的最上层时,以下情况会执行onSaveInstanceState() 注:系统不知道你切换到其他地方后要运行多少其他的程序,自然也不知...:onRestoreInstanceState() & onCreate() // 上述二者都有一个Bundle类型的参数用于恢复数据 savedInstanceState.putBoolean...调用时机 当系统“未经你许可”时,确实销毁了你的Activity,则重新启动时会被系统调用 特别说明: 与onSaveInstanceState()区别:此处是 “确实销毁”后才调用 若是 被用户主动销毁...: onCreate() onStart() onRestoreInstanceState() onResume() 4....()不会被执行 onSaveInstanceState的bundle参数会传递到onCreate方法中,可选择在onCreate()中做数据还原 至此,关于Activity的临时数据 & 状态 保存 &
Activity的启动过程:onCreate—onStart—onResume;下返回键时:onPause—onStop—onDestroy 正如上面说是,当按下返回键时,此Activity弹出栈,程序销毁...确实如此,我们再次 打开时的启动过程又回到onCreate—onStart—onResume。...onRestart():在 activity 被停止后又一次启动时会调用该方法。其兴许会调用 onStart 方法。 onStart()à当 activity 对于用户可见前即调用这种方法。...不管在该方法里面进行不论什么操作,都须要较高速完毕,由于假设它不返回的话,下一个 activity 将无法恢复出来。...由于这个原因,你的 activity 能否在其又一次创建时完毕保存状态就显得尤为重要,由于用户常常会在使用应用程序时旋转屏幕的。
生命周期 那七个方法你不可能不熟悉: onCreate->onRestart->onStart->onResume->onPause->onStop->onDestory Activity的创建和销毁都会回调这七个方法...onRestart:Activity重新启动时回调。 onStart:Activity正在被启动时回调。 onResume:Activity可见时回调。...我们来看具体场景: 场景一:正常启动 会执行:onCreate->onStart->onResume 这时候,Activity是完全可见的。...extra_test"); Log.d(TAG, "[onRestoreInstanceState] restore extra_test:" + test); } 我们也可以在onCreate...(R.layout.activity_second); Log.d(TAG, "onCreate"); // 可以在onCreate方法内进行数据恢复,但需要判断是否为null
生命周期:在整个的生命周期,从onCreate(Bundle)开始到onDestroy()结束。从onStart()开始到onStop()结束。从onResume()开始到onPause(()结束。...所以Activity生命周期:包含的回调方法有,onCreate(); onStart(); onResume(); onPause(); onStop(); onDestroy() 2.Activity...3.Service服务 服务是一个应用程序组件,代表应用程序希望在不与用户交互的情况下执行长时间运行的操作,或者提供其他应用程序使用的功能。 4.什么是服务? 服务不是一个单独的过程。...singleTop是在启动活动时如果发现返回栈的栈顶已经是该活动,则认为可以直接使用它。 singleTask是如果每次启动时系统首先会在返回栈中检查是否存在该活动的实例。...Intent为在不同应用程序中的代码之间执行延迟的运行时绑定提供了一种工具。其最重要的用途是开展活动,在活动中它可以被认为是活动之间的胶水。它基本上是一个被动的数据结构,对被执行的动作进行抽象描述。
onStart():当Activity可见未获得用户焦点不能交互时系统会调用。 onRestart():当Activity已经停止然后重新被启动时系统会调用。...在这两个方法之间,可以保持显示Activity所需要的资源。如在onStart()中注册一个广播接收者监听影响你的UI的改变,在onStop()中注销。...7、一个activity的启动过程 (1)第一个Activity的启动顺序:onCreate()——>onStart()——>onResume() (2)当另一个Activity启动时:第一个Activity...onPause()——>第二个Activity onCreate()——>onStart()——>onResume()——>第一个Activity onStop() (3)当返回到第一个Activity...onDestroy() 每一个Activity都处于某一个状态,对于开发者来说,是无法控制其应用程序处于某一个状态的,这些均由系统来完成。
Activity与Window的关系 在Android应用程序中,Activity是用户界面的主要交互点和组织者。...WindowManager的作用 WindowManager在Android系统中扮演了以下关键角色: 窗口管理:WindowManager管理所有应用程序窗口的显示和布局,确保窗口按正确顺序叠放,以便用户与它们交互...DecorView在Android应用程序中扮演着重要的角色。...通常,在Activity的onStart()和onResume()方法中,Window会变得可见,并在屏幕上绘制Activity的用户界面。...() { super.onResume(); // 恢复与Window的交互 } 销毁Window 当Activity被销毁(例如,用户按下返回按钮或通过finish()方法)时,与之关联的
利用TraceView分析启动时间 在onCreate开始和结尾打上trace. Debug.startMethodTracing("TestApp"); ......针对冷启动时候的一些耗时,可以采取以下策略: 1、在Application的构造器方法、attachBaseContext()、onCreate()方法中不要进行耗时操作的初始化,一些数据预取放在异步线程中...优化应用启动时的体验 对于应用的启动时间,只能是尽量的避免一些耗时的、非必要的操作在主线程中,这样相对可以缩减一部分启动的耗时,另外一方面在等待第一帧显示的时间里,可以加入一些配置以增加体验,比如加入Activity...); } 这样在启动时会先显示background,然后待界面绘制完成再显示主界面: 方案2:通过设置Style (1)设置背景图Theme 通过设置一张背景图。...当程序启动时,首先显示这张背景图,避免出现黑屏
懒加载 : 尽量使用懒加载策略 , 避免在应用启动时大量调用方法 ; ① 定时器或线程延迟加载 : 开一个定时器或线程过一段时间 ( 3 秒后 ) 加载 ; ② 在 onResume 方法中加载 ; ③...; 在 Application 或 Activity 代码的 onCreate 方法中 , 尽量不要有任何 访问 文件 , 数据库 , SharedPreference , 初始化第三方框架 等操作...应用启动时间计算相关源码分析 在 【Android 性能优化】应用启动优化 ( 启动白屏问题 | 应用启动时间测量 | 冷启动 | 热启动 | 应用启动时间计算源码分析 ) 博客中分析了应用启动时间计算相关的源码...应用初始化 | 启动优化项目 ) 博客对应用入口类 , 即 ActivityThread 主函数类进行了分析 , 从这里开始初始化应用的 Application , Activity , 其中就发现应用启动时..., 需要调用 Application 和 Launcher Activity 的 onCreate 方法 , 这两个方法中绝对不能执行耗时操作 , 这也是启动优化唯一可以优化的地方 ; 启动优化就是在
不过,当 Activity 正在运行(处于已恢复生命周期状态)时,可以独立操纵每个片段,如添加或移除片段。...通常,至少应实现以下生命周期方法: onCreate() 系统会在创建片段时调用此方法。当片段经历暂停或停止状态继而恢复后,如果希望保留此片段的基本组件,则应在实现中将其初始化。...savedInstanceState 参数是在恢复片段时,提供上一片段实例相关数据的 Bundle(处理片段生命周期部分对恢复状态做了详细阐述)。...不过,如果在删除片段时调用 addToBackStack(),则系统会停止该片段,并随后在用户回退时将其恢复。...->onResume 的生命周期,明明 Fragment 没有显示却已经到onResume 了,在某些情况下会出现问题。比如数据的加载时机、判断 Fragment 是否可见等。
领取专属 10元无门槛券
手把手带您无忧上云