Android生命周期注意事项

            生命周期图解

以下英文引用全部来自google官方文档说明,方便理解。


onCreate (Bundle savedInstanceState)

You can call finish() from within this function, in which case onDestroy() will be immediately called without any of the rest of the activity lifecycle (onStart()onResume()onPause(), etc) executing.

如果onCreate里面直接finish(),就不会走其他方法,会直接onDestory()。

可以自己打印日志试一下,确实如此。


onResume ()

Called after onRestoreInstanceState(Bundle)onRestart(), or onPause(), for your activity to start interacting with the user. This is a good place to begin animations, open exclusive-access devices (such as the camera), etc.

有可能在这三个方法之后调用,这是一个开启动画或者专有设备(比如Camera)的好时机。

Keep in mind that onResume is not the best indicator that your activity is visible to the user; a system window such as the keyguard may be in front. Use onWindowFocusChanged(boolean) to know for certain that your activity is visible to the user (for example, to resume a game).

但是它并不意味着你的Acitivity就对用户可见了,有可能系统的window还在你的前面,比如被锁屏的情况下这个acitivity已经OnResume,但是其实不可见。如果想确定是否这个avitivity对用户可见的,可以用onWindowFocusChanged(boolean)方法来确定。它会在onResume后运行。

例子:acitvity进入焦点

MainActivity onCreate
 MainActivity onStart
MainActivity onResume
 MainActivity onWindowFocusChanged  hasFocus=true

当此activity退出时

MainActivity onWindowFocusChanged  hasFocus=false
 MainActivity onPause
 MainActivity onStop
 MainActivity onDestroy


onPause ()

Called as part of the activity lifecycle when an activity is going into the background, but has not (yet) been killed.

When activity B is launched in front of activity A, this callback will be invoked on A. B will not be created until A‘s onPause() returns, so be sure to not do anything lengthy here.

当Activity要进入后台时触发此方法,但是还没有被杀。

比如当B在A上面启动后,会触发此方法。除非A的onPause方法执行完,否则B不会create.所以要保证不在这个方法内做过多的事情。

This callback is mostly used for saving any persistent state the activity is editing, to present a "edit in place" model to the user and making sure nothing is lost if there are not enough resources to start the new activity without first killing this one. This is also a good place to do things like stop animations and other things that consume a noticeable amount of CPU in order to make the switch to the next activity as fast as possible, or to close resources that are exclusive access such as the camera.

这个方法主要用来保存一些Acitivity正在编辑的状态或者是关闭一些动画等事件让cpu更好运转,以便更迅速的开启下一个Activity(UI总是要先展示给用户看----生命周期设计精髓),或者是关闭一些资源,比如Camera.

After receiving this call you will usually receive a following call to onStop() (after the next activity has been resumed and displayed), however in some cases there will be a direct call back to onResume() without going through the stopped state.

在这个方法调用后会接着调用onStop,但是要等到下一个Activity被展示出来。


onStop ()

Called when you are no longer visible to the user.当对用户完全不可见的时候会调用此方法。

Note that this method may never be called, in low memory situations where the system does not have enough memory to keep your activity‘s process running after its onPause() method is called.

注意这个方法也许就根本不会被调用,当内存严重不足的时候Activity OnPause()后,已经没有足够内存就来执行OnStop();(如开始那幅图,直接onPause走左边)


其他注意事项:

从MainAcitivity----跳转--->SecondActivity发生的日志:

MainAcitivity onCreate()

MainAcitivity onStart()

MainAcitivity onResume()

MainAcitivity onPause()

SecondActivity onCreate()

               SecondActivity onStart()

                 SecondActivity onResume()

MainAcitivity onStop()

时间: 2024-10-14 04:55:26

Android生命周期注意事项的相关文章

Android生命周期里你或许不知道的事

Android生命周期估计连初学者都再熟悉不过的东西了,但这里我抛出几个问题,或许大家以前没有想过或者可能认识的有些错误. 一.当A启动B时,A和B生命周期方法执行的先后顺序是怎样的?当按返回键返回时,又是怎样的?(读者可以先想想,可能会跟你的答案不一致) A--->B时,打印结果如下: 按返回键B--->A,打印结果如下: 结论:先执行当前显示Activity的onPause方法,接着执行完将要显示Activity的生命周期方法,最后再执行当前显示Activity的其它生命周期方法 二.生命

android生命周期总结

管理Activity的生命周期 当用户浏览,离开和返回到你的app,Activity的实例在其生命周期的不同状态下转换.举例来说:当你的应用程序第一次启动时,它来到系统中突出的位置并且接收用户的焦点.(it comes to the foreground of the system and receives user focus.)在此过程中,当你装载用户界面和其他组件时,Android系统在你的Activity中调用了一系列的生命周期函数.如果用户做了一个动作启动了其他的activity或者切

Android 生命周期

与windows平台不同,Android应用程序不能控制自己的生命周期,应用程序组件必须监听应用程序的状态的变化并作出适当反应,特别要注意为随时被终止做好准备 默认情况下,每个Android应用程序都是通过他们自己的进程运行,每个进程都运行在独立的Dalvik实例中,每个应用程序的内存和进程管理都是由运行时进行专门处理的.通过使用android:process属性可以使同一个应用程序组件运行在不同的进程中,或者让多个应用程序共享一个进程 回收资源时,进程被终止的顺序是由它们的应用程序优先级决定的

Android生命周期(三)

一个Android应用程序的生命周期用以下图解释再清楚不过了. 创建一个demo,代码如下: public class MainActivity extends Activity { private static final String TAG = "Android_life"; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); Log.

[转]Android生命周期

转自:http://www.cnblogs.com/shaweng/archive/2012/07/03/2575302.html 三个循环 提供两个关于Activity的生命周期模型图示帮助理解:                                           图1 图2 从图2所示的Activity生命周期不难看出,在这个图中包含了两层循环, 第一层循环是onPause -> onResume -> onPause, 第二层循环是onStop -> onResta

Android生命周期与Intent笔记

生命周期: 从出生到死亡 Activity生命周期的7个方法和3个循环 onCreate() 创建时调用onRestart() 不可见到可见时调用onStart() 用户可见时调用onResume() 用户可交互时调用onPause() 用户不可交互时调用onStop() 用户不可见时调用onDestroy() 销毁时调用 启动与退出的循环Activity启动 onCreate() -- onStart() -- onResume()Activity退出 onPause() -- onStop(

Android生命周期 & Activity生命周期

了解Android系统的进程优先级的变化方式 1.Android系统一般是运行在资源受限的硬件平台上,因此资源管理对Android系统很重要 2.为了保证高优先级程序正常运行,可以在无任何警告的情况下终止低优先级程序,并回收其使用的系统资源,因此,Android程序并不能完全控制自身的生命周期,而是由ANdroid系统进行调度和控制的 3.Android系统尽可能地不主动去终止应用程序,即使生命周期结束的程序也会保存在内存中,以便再次快速启动 4.但在内存紧张时,系统会根据进程的优先级清除进程,

Android生命周期详细说明

提供两个关于Activity的生命周期模型图示帮助理解:                                           图1 图2 从图2所示的Activity生命周期不难看出,在这个图中包含了两层循环, 第一层循环是onPause -> onResume -> onPause, 第二层循环是onStop -> onRestart -> onStart -> onResume -> onPause -> onStop.我们可以将这两层循环看成

4、android生命周期的介绍

1.什么事Activity 就是布满整个窗口或者悬浮于其他窗口之上的交互界面,一个应用由多个Activity构成,都会在Mainifest.xml中指定一个主的Activity. 当程序第一次运行就会看到主activity,这个activity通过启动其他activity进行相关操作 当启动其他activity时,当前这个activity将会停止,新的activity压入栈中,同事获取用户焦点 因为栈是先进后出,用户back时,当前页面销毁,之前页面显示 2.Activity的生命周期 7个方法