第一次写博客,写的不好请大家见谅!先说一下我为什么要写博客。一是为了强迫自己进行总结,第二嘛也许如鲁迅所说的:是为了忘却的纪念。说到Android开发必然绕不开四大组件,而Activity可以和用户进行交互,其重要性不言而喻,所以我选择从Activity开始我的Android之旅。本文主要是来探究一下Android的生命周期。
废话就不再说了,这里先贴一下代码。
package com.stom.testactivity; import android.app.Activity; import android.os.Bundle; import android.util.Log; public class MainActivity extends Activity { static final String TAG = "Activity"; @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 onRestart() { super.onRestart(); Log.d("TAG", "onRestart"); } }
为了更好理解这些方法,我把谷歌的示意图贴出来。
结合谷歌官方给出的这个示意图,我测试的结果是:
第一次启动Activity会经过onCreate()、onStart()、onResume()三个方法,测试结果如下:
图片
这里就可以和用户进行交互了。这时候用户如果打开了一个透明度不为0的Activity或者是Dialog即之前的Activity还是可见的,那么系统就只会执行onPause()这一个方法,此时按下返回键执行onRume()再次得到焦点。
当用户按下Home键的时候会依次执行onPause()、onStop()方法,这时候Activity并没有被杀死,onDestroy()方法没有得到执行,这时候如果重新启动应用程序会依次调用onRestart()、onStart()、onResume()三个方法,不会执行onCreate()方法。
图片
值得一提的是,当具有更高级别的应用程序需要内存时,系统会自动回收处在onPause()和onStop()方法的Activity。