什么是Activity
简单的说Activity就是布满整个窗口或者悬浮于其他窗口上的交互界面,也就是手机屏幕上所显示的内容。
在一个应用程序中通常由多个Activity构成,都会在Manifest.xml中指定一个主的Activity。Intent-filter中的两行代码非常重要,表示该活动是主活动。
当程序第一次运行时就可以看到这个Activity,这个Activity可以通过启动其他的Activity进行相关操作。当启动其他的Activity时,这个当前的活动就会停止,被压入栈底,新的活动会在栈顶并运行。当用户按Back键时,当前活动会被销毁,前一个活动重新恢复运行。
活动的生命周期:
活动的七个方法与三个阶段:
1.onCreate()
每个活动都会有的方法,在活动第一次被创建的时候调用
2.OnStart
这个活动在活动由不可见变为可见的时候调用
3.OnResume
这个方法在活动准备好和用户进行交互的时候调用,此时的活动一定位于返回栈的栈顶,并且处于运行状态。
4. onPause()
这个方法在系统准备去启动或者恢复另一个活动的时候调用。 我们通常会在这个方
法中将一些消耗 CPU 的资源释放掉,以及保存一些关键数据,但这个方法的执行速度
一定要快,不然会影响到新的栈顶活动的使用。
5.onStop()
这个方法在活动完全不可见的时候调用。它和 onPause()方法的主要区别在于,如
果启动的新活动是一个对话框式的活动,那么 onPause()方法会得到执行,而 onStop()
方法并不会执行。
6.onDestroy()
这个方法在活动被销毁之前调用,之后活动的状态将变为销毁状态。
7.onRestart()
这个方法在活动由停止状态变为运行状态之前调用,也就是活动被重新启动了。
以上七个方法中除了 onRestart()方法,其他都是两两相对的,从而又可以将活动分为三
种生存期。
三个阶段:
1.开始Activity:在这个阶段依次执行3个生命周期的方法,分别是:onCreate、onStart和onResume方法
2.Activity重新获得焦点:如果Activity重新获得焦点,会依次执行3个方法,onRestart、onStart和onResume
3.关闭Activity:当Activity被关闭时系统会依次执行3个方法,onPause、onStop和onDestory。
从以上的Activity的生命周期不难看出,该图包含了两层循环,第一层循环是:onPause->onResume->onPause
第二层循环是:onStart->onRestart->onResume->onPause->onStop
第一层循环称为是 焦点生命周期,第二层循环可以视为生命周期。也就是说,第一层循环是在Activity焦点获得与失去的过程中循环,在这个过程中,Activity始终是可见的
第二层循环是Activity可见和不可见的过程中循环。
package com.example.android_life; import android.app.Activity; import android.os.Bundle; import android.util.Log; import android.view.Menu; import android.view.MenuItem; public class MainActivity extends Activity { private String TAG = "MainActivity"; protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Log.i(TAG, "onCreate is executed"); } @Override protected void onStart() { // TODO Auto-generated method stub super.onStart(); Log.i(TAG, "onStart is executed"); } @Override protected void onRestart() { // TODO Auto-generated method stub super.onRestart(); Log.i(TAG, "onRestart is executed"); } @Override protected void onResume() { // TODO Auto-generated method stub super.onResume(); Log.i(TAG, "onResume is executed"); } @Override protected void onStop() { // TODO Auto-generated method stub super.onStop(); Log.i(TAG, "onStop is executed"); } @Override protected void onPause() { // TODO Auto-generated method stub super.onPause(); Log.i(TAG, "onPause is executed"); } @Override protected void onDestroy() { // TODO Auto-generated method stub super.onDestroy(); Log.i(TAG, "onDestroy is executed"); } }
当程序部署到模拟器上的时候,先出现了onCreate onStart、onResume(创建->启动->运行)方法,这时候,按拨号按钮,会出现onPause、onStop(暂停->停止)方法。按下Back键 onRestart onStart onResume (重启->启动->运行) 退出键 onPause onStop onDestory(暂停->停止->销毁)