Android开发中Activity的生命周期及加载模式详解

2019-12-10 17:59:45于海丽
易采站长站为您分析Android开发中Activity的生命周期及加载模式详解的相关资料,非常不错具有参考借鉴价值,需要的朋友可以参考下  

本文给大家介绍Activity的生命周期,如果大家学习过iOS的小伙伴的话,Activity的生命周期和iOS中ViewController的生命周期非常类似。生命周期,并不难理解。一个人的生命周期莫过于生老病死,花儿的生命周期就是花开花谢了。在Android中Activity的生命周期莫过于Activity的创建到消亡的过程了。本篇博客就会介绍Activity生命周期中的不同阶段,通过实例的形式来窥探一下Activity的生命周期。搞明白Activity的生命周期是至关重要的,因为只有搞明白每个生命周期的每个阶段,你才能在不同段做不同的事情。

接下来我们将通过一个实例来介绍Activity的生命周期,在这个Demo中会有一个MainActivity, MainActivity就是App启动后第一个显示的Activity。在MainActivity上有一个按钮,点击这个按钮就会跳转到SecondActivity,点击返回键就会从SecondActivity中返回到MainActivity中,再点击返回键就会退出App。通过这一些列的Activity的切换,我们将通过打印Log的方式来进行观察Activity的生命周期。

一.代码编写

其实这篇博客的代码是非常简单的,就是重写Activity生命周期不同阶段的方法,然后在方法中进行Log的打印,从而来标记这个生命周期的阶段。而Demo的UI也是灰常的简单的,所以Activity的layout文件就不做过多的赘述了。接下来看一下两个Activity中的关键代码。

1.下方的代码是MainActivity中的关键代码,对Activity生命周期的不同阶段进行重写,然后打印日志,标记出是哪个Activity中的哪个方法。在onCreate()方法中通过id获取Button, 然后给按钮绑定上单击事件,点击button时跳转到SecondActivity中。具体代码如下。

 @Override
   protected void onCreate(Bundle savedInstanceState) {
     super.onCreate(savedInstanceState);
     setContentView(R.layout.activity_main);
     Log.d("lifeCycle", "MainActivity: 我是onCreate方法,我会在Activity第一次被创建是调用");
     Button jumpButton = (Button) findViewById(R.id.jump_second_button);
     jumpButton.setOnClickListener(new View.OnClickListener() {
       @Override
       public void onClick(View v) {
         //跳转到SecondActivity
         Intent intent = new Intent(MainActivity.this, SecondActivity.class);
         startActivity(intent);
       }
     });
   }
   //Ctrl + O 选择父类中的方法进行重写
   @Override
   protected void onStart() {
     super.onStart();
     Log.d("lifeCycle", "MainActivity: 我是onStart方法,我会在Activity由不可见变为可见时调用");
   }
   @Override
   protected void onResume() {
     super.onResume();
     Log.d("lifeCycle", "MainActivity: 我是onResume方法,我在Activity处于运行状态时调用");
   }
   @Override
   protected void onPause() {
     super.onPause();
     Log.d("lifeCycle", "MainActivity: 我是onPause方法,我会在Activity暂停时调用");
   }
   @Override
   protected void onStop() {
     super.onStop();
     Log.d("lifeCycle", "MainActivity: 我是onStop方法,我会在Activity停止时调用");
   }
   @Override
   protected void onRestart() {
     super.onRestart();
     Log.d("lifeCycle", "MainActivity: 我是onRestart方法,我会在Activty从停止状态变为运行状态时调用");
   }
   @Override
   protected void onDestroy() {
     super.onDestroy();
     Log.d("lifeCycle", "MainActivity: 我是onDestroy方法,我会在Activty销毁之前调用");
   }