Activity生命周期中三个不常用的方法:onContentChanged,onPostCreate,onPostResume

说到Activity的生命周期,我的第一反应就是onCreate()onStart()onResume()onPause()onStop()onDestory()onRestart()这 7 个生命周期方法。不过今天看前辈代码的时候碰到他重写了onPostCreate方法,特此做个笔记。

首先,用一个Demo先将他们执行顺序打印出来:

public class MainActivity extends AppCompatActivity {

    private static final String TAG = "MainActivity";

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

        Log.d(TAG, "onCreate: ");
    }

    @Override
    protected void onStart() {
        super.onStart();
        Log.d(TAG, "onStart: ");
    }

    @Override
    protected void onResume() {
        super.onResume();
        Log.d(TAG, "onResume: ");
    }

    @Override
    protected void onPause() {
        super.onPause();
        Log.d(TAG, "onPause: ");
    }

    @Override
    protected void onStop() {
        super.onStop();
        Log.d(TAG, "onStop: ");
    }

    @Override
    protected void onDestroy() {
        super.onDestroy();
        Log.d(TAG, "onDestroy: ");
    }

    @Override
    protected void onPostCreate(@Nullable Bundle savedInstanceState) {
        super.onPostCreate(savedInstanceState);
        Log.d(TAG, "onPostCreate: ");
    }

    @Override
    protected void onPostResume() {
        super.onPostResume();
        Log.d(TAG, "onPostResume: ");
    }

    @Override
    public void onContentChanged() {
        super.onContentChanged();
        Log.d(TAG, "onContentChanged: ");
    }

}

打印结果:


可以看到,其顺序是这样的:
onContentChanged –> onCreate –> onStart –> onPostCreate –> onResume–> onPostResume –> onPause –> onStop –> onDestroy

下面来分别解释这三个方法的含义:

  • onContentChanged
    Activity的布局改动时,即setContentView()或者addContentView()方法执行完毕时就会调用该方法, 例如,Activity中各种ViewfindViewById()方法都可以放到该方法中。
  • onPostCreateonPostResume
    onPostCreate方法是指onCreate方法彻底执行完毕的回调,onPostResume类似,这两个方法官方说法是一般不会重写,现在知道的做法也就只有在使用ActionBarDrawerToggle的使用在onPostCreate需要在屏幕旋转时候等同步下状态,Google官方提供的一些实例就是如下做法:
@Override
protected void onPostCreate(Bundle savedInstanceState) {
    super.onPostCreate(savedInstanceState);
 
    // Sync the toggle state after onRestoreInstanceState has occurred.
    mDrawerToggle.syncState();
}

关于Activity常见的 7 个生命周期可查看我的另外一篇文章:Android四大组件之Activity,其次Activity在异常情况下还会涉及到onSaveInstanceState()onRestoreInstanceState()两个方法,在该文也有讲到。

参考文章Activity生命周期中三个不常用的方法:onContentChanged,onPostCreate,onPostResume

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • Android的开发中我们大部分都是和Activity打交道,而想很好的运用Activity首先必须要清楚Acti...
    云天随笔阅读 1,330评论 0 1
  • 启动与销毁Activity 不同于使用 main() 方法启动应用的其他编程范例,Android 系统会通过调用对...
    mouekz阅读 719评论 0 0
  • 本节例程下载地址:WillFlowLifeCycle 一、Activity详解 (1)Activity是什么? 其...
    常思行阅读 1,414评论 0 0
  • 作为一家企业,最重要的商业因素就是员工的“归属”感,即员工对组织的忠诚度。成功的公司都是有“心”,不仅对顾客,对自...
    彭晓芬阅读 341评论 0 0
  • 夏天的炎热,有时并不遭人烦,特别是在把女生们的身材更加细致地刻画出来的时候。那些细长的大腿,和婀娜的杨柳腰,成了男...
    鹿妞day阅读 630评论 1 14

友情链接更多精彩内容