理解activity的生命周期

首先,我们要知道android的生命周期几乎和活动activity的生命周期相同。想要知道activity的生命周期,那么我们先了解一下活动堆栈。

一,活动堆栈
开始我们先讲一个关于洗碗工的故事:一天有一个洗碗工在洗碟子,当他把第一个碟子洗好了就放在桶里,洗碗工每洗好一个新的碟子就往桶里放。洗碗工把碟子洗好了,就把全部的碟子放在厨房里,每放厨师出一个新的菜,就在桶里拿出一个新的碟子。直到碟子用完。

故事已经说完了,其实故事里面说的洗碗工洗碟子,就好像应用程序每当启动一个新的活动,每一个新的活动就往栈内存放。栈底就是第一个启动的活动,栈顶就是现在看到的活动。那么每次退出这个活动,就如同上面故事说的厨师出一个新的菜。直到碟子用完了,我们的应用程序页退出了界面。

理解activity的生命周期_第1张图片

二,生命周期
如果之前有学过jsp 和 servlet,就发现servlet里面也有生命周期,我们会根据不同的状态转换,而不是目前的那一个状态。现在先看下图,了解activity的生命周期。
理解activity的生命周期_第2张图片

activity的生命周期有5个状态:分别是启动,运行,暂停,停止,销毁。

1,启动activity,会调用系统的onCreate()方法,然后调用onStart()方法,最后调用onResume()方法。(启动->运行)
2,目前activity切被一个新的activity覆盖,或者是锁屏:系统调用onPause()方法。目前activity处于暂停状态,不可见。(运行->暂停)
3,目前activity由于被覆盖回到前台或者是解锁,会调用系统的onPesume()方法回到运行状态。(暂停->运行)
4,目前activity由于新的activity界面或者按了Home返回菜单,系统会调用onPause()方法,再调用onStop()方法。(运行->停止)
5,用户重新回到activity界面中,系统将调用onStart(),再调用onStart(),最后调用onResume()方法。(停止->运行)
6,用户退出activity,系统调用onPause(),再调用onStop(),最后调用onDestory()方法,退出程序。(运行->销毁).

注意:在停止状态的时候,如果手机的内存太低,或者是运行内存清理程序,就会调用onDestroy()方法杀死程序。

对于用户来说,活动状态只有3种,可见(运行和暂停),不可见(停止和销毁),获得焦点(运行)。

三,管理活动的状态
简单的说明一下生命周期的每一个方法的回调以及说明。

  1. onCreate():此方法在活动的创建时候调用,可以在此方法运行静态活动的初始化,并且可以在此方法创建使用界面的组件,我们可以将这个方法看做活动的入口。
  2. onStart():此方法会在用户将要看到的时候调用。
  3. onResume():此方法会在与用户互动的时候调用。
  4. onPause():此方法会在暂停目前的活动时候调用,例如:我们显示对话框的时候,活动就调用了此方法。并且我们也会在此方法存储尚未存储的数据。
  5. onStop()此方法会在停止活动的时候调用,也是用户看不见的时候。可能有3种情况,启动新活动,之前的活动返回到屏幕,或活动将被删除。
  6. onRestart():此方法在活动重新返回屏幕的时候调用。例如:突然来了条短信,然后你打开阅读完的短信,最后有打开了这个程序的活动。
  7. onDestory():此方法会在销毁活动的时候调用。

四,代码测试

public class MainActivity extends Activity {
    //1,创建
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Log.d("TAG", "MainActivity:onCreate()");
    }
    //2,开始
    @Override
    protected void onStart() {

        super.onStart();
        Log.d("TAG", "MainActivity:onStart() ");
    }
    //3,继续
    @Override
    protected void onResume() {

        super.onResume();
        Log.d("TAG", "MainActivity:onResume()");
    }
    //4,暂停
    @Override
    protected void onPause() {

        super.onPause();
        Log.d("TAG", "MainActivity: onPause()");
    }
    //5,停止
    @Override
    protected void onStop() {

        super.onStop();
        Log.d("TAG", "MainActivity :onStop()");
    }
    //6,重新启动
    @Override
    protected void onRestart() {

        super.onRestart();
        Log.d("TAG", "MainActivity: onRestart()");
    }
    //7,销毁
    @Override
    protected void onDestroy() {

        super.onDestroy();
        Log.d("TAG", "MainActivity :onDestroy()");
    }

}

你可能感兴趣的:(android,生命周期,栈)