Activity的生命周期

转载请标明出处:http://blog.csdn.net/wu_wxc/article/details/51353801
本文出自【吴孝城的CSDN博客】

Activity是Android四大组件之一,在Android开发中是一个必不可少的课程,想学好Activity,就不得不搞懂它的几个生命周期,下面是官网给出的Activity的生命周期图
官方文档:https://developer.android.com/reference/android/app/Activity.html
Activity的生命周期_第1张图片

在创建一个Android应用时,我们会看到创建了一个主方法,里面就有一个方法

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }

它首先创建了应用的UI界面
所有的Activity都将实现onCreate(Bundle)做它们的初始化设置
下面是Activity的几个生命周期

 public class Activity extends ApplicationContext {
     protected void onCreate(Bundle savedInstanceState);

     protected void onStart();

     protected void onRestart();

     protected void onResume();

     protected void onPause();

     protected void onStop();

     protected void onDestroy();
 }

接下来说说它们的对应关系和描述
我们可以把其中六个方法看作是一一对应的
onCreate创建—-onDestroy销毁
onStart可见——onStop不可见
onResume可编辑—-onPause暂停
剩下onRestart是在onStop后,没有被onDestroy,再次启动Activity时调用(不再调用onCreate方法),如果被onDestroy,则调用onCreate,

现在假设有两个Activity,A和B,
当A启动时,A会依次执行onCreate,onStart,onResume
点击Home键回到桌面,A会执行onPause,onStop
重新进入程序A会执行onRestart,onStart,onResume
按下返回键会执行onPause,onStop,onDestroy
重新启动该应用程序时,又是一个新的生命周期

当从A启动B时,A会执行onPause,B会执行onCreate,onStart,onResume,这时A才会执行onStop,因为只有当B获得焦点可编辑时,
A才onStop

假设原有Activity为A,对话框Activity为B
当我们从A启动对话框B时,A会执行onPause,B会执行onCreate,onStart,onResume
这时我们点击A的区域,这时B会先执行onPause,A执行onResume,然后B再执行onStop,onDestroy

生命周期的运作表

Method Description Killable? Next
onCreate() 当Activity第一次创建时调用,这是所有正常的静态设置应该做的,创建视图,绑定数据列表等,后面总是跟随着onStart() No onStart()
onRestart() 在你的Activity被onStop之前,它被调用,后面跟随着onStart() No onStart()
onStart() Activity可见时调用。当Activity在前台时,后面跟着onResume()。当Activity被隐藏不可见时,后面跟着onStop()。 No onResume() or onStop()
onResume() 当Activity开始与用户交互的时间调用,在这点上你的Activity是在堆栈的顶部,给用户输入。后面跟随着onPause() No onPause()
onPause() 当系统要启动恢复一个以前的Activity时调用,通常用于提交末保存的持久数据,停止动画和其他一些可能消耗CPU的事等,此方法的实现必须非常快,因为在这个方法返回之前,下一个Activity将不会被恢复.如果Activity回到前面时,后面跟随着onResume(),如果Activity对用户不可见时,后面是onStop() Pre-HONEYCOMB onResume() or onStop()
onStop() 当Activity不再对用户可见时调用,因为其他的Activity已经覆盖了它,这个Activity也可能被摧毁。如果这个Activity重新与用户进行交互时,后面跟随onRestart(),如果这个Activity被摧毁,后面跟随onDestroy() Yes onRestart() or onDestroy()
onDestroy() 在接受到Activity被摧毁之前最终调用,可能是这个Activity被调用了finish()方法,或者是系统为了节省空间将这个Activity摧毁了,可以用isFinishing()区分这两个情况 Yes nothing

你可能感兴趣的:(Activity)