> 文档中心 > Android基础#3:Android Activity生命周期详解,onCreate~onRestart

Android基础#3:Android Activity生命周期详解,onCreate~onRestart

  一切皆有生命。-----箴言-----

1. Activity生命周期图解:

作为与用户交互的桥梁,从生到灭,Activity有自己的生命周期,相信对下面这张图都不陌生。这张图详细而直观得表现了Activity各生命周期间的关系。

Activity生命周期

图解:

onCreate():

创建,这是Activity生命周期的第一个方法,也是我们在android开发中接触的最多的生命周期方法。
当点击activity的时候,系统会调用activity的oncreate()方法,在这个方法中,会初始化当前布局setContentLayout()方法。

onStart():

这是Activity生命周期的第二个方法。在onCreate()之后被调用,此时Activity已经可见了,但是还没出现在前台,我们还看不到,无法与Activity交互。
onResume():
在onStart()之后被调用,Resume表示继续、重新开始,这名字和它的职责也相同。此时,Activity在这个阶段已经出现在前台并且可见了。当前activity状态属于运行状态 (Running),可与用户进行交互。

onPouse():
暂停,当另外一个activity覆盖当前的acitivty时,此时当前activity会进入到onPouse()方法中,当前activity是可见的,但不能与用户交互状态。

onStop():

停止,此时Activity已经不可见了,但是Activity对象还在内存中,没有被销毁。
在系统内存紧张的情况下,有可能会被系统进行回收。所以一般在当前方法可做资源回收。

onDestory()
销毁,这个阶段Activity被销毁,activity不可见,我们可以将还没释放的资源释放,以及进行一些回收工作。

onRestart()
重新开始,Activity在这时可见,当用户按Home键切换到桌面后又切回来或者从后一个Activity切回前一个Activity就会触发这个方法。调用顺序onPouse()->onStop()->onRestart()->onStart()->onResume()。

Activity生命周期打印:

代码:

//打印生命周期logpublic class MainActivity extends Activity {    private static final String TAG = "MainActivity";    FrameLayout viewContent;    protected TextView tvTitle; @Override    public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); tvTitle = findViewById(R.id.title_Textview); viewContent= (FrameLayout) findViewById(R.id.viewContent);     }    @Override    protected void onStart() { Log.i(TAG, "onStart"); super.onStart();    }    @Override    protected void onResume() { Log.i(TAG, "onResume"); super.onResume();    }    @Override    protected void onPause() { Log.i(TAG, "onPause"); super.onPause();    }    @Override    protected void onStop() { Log.i(TAG, "onStop"); super.onStop();    }    @Override    protected void onDestroy() { Log.i(TAG, "onDestroy"); super.onDestroy();    }    @Override    protected void onRestart() { Log.i(TAG, "onRestart"); super.onRestart();    }    protected void setTitle(String title){ if (!TextUtils.isEmpty(title)){     tvTitle.setText(title); }    }    }

 

当两个Activity切换时各自的生命周期:

ActivityA:onCreate()->onStart()->onResume()->onPouse()
ActivityB:onCreate()->onStart()->onResume()
ActivityA:onStop()->onDestory()

当ActivityA切换ActivityB(此activity是以dialog形式存在的)所执行的方法:

ActivityA:onCreate()->onStart()->onResume()->onPouse()
ActivityB:onCreate()->onStart()->onResume()
 


 

31戒烟网