一、Activity是指应用程序组件讲的通俗点就是应用程序界面的生命周期,一个应用程序有很多个Activity组成,那么了解Activity的生命周期尤为重要。
首先根据Android提供的SDK可以看到Activity的生命周期状态有以下几种:
1.OnCreate():即创建一个Activity简单的创建一个Android应用程序不必添加代码就能看到一个Activity的创建过程
public class main extends Activity
{
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
}
}
2.onStart():当一个应用程序启动后系统会自动调用onStart()方法启动应用程序界面
3.onResume():在onStart()被调用后系统会调用此Avtivity的onResume()方法,此时进入Activity运行状态。进入消息监听状态。
4.onPause():当当前Activity跳转到另外一个Activity的时候(或者系统锁屏)系统会调用onPause()方法,先暂停当前的Activity但是没有销毁。
5.onStop():当第二个Activity启动后(包含创建、启动、进入监听状态即执行OnCreate()、onStart()、onResume()方法)第一个系统调用onStop() 方法停止第一个Activity.
6.onRestart():当按返回键时第二个Activity进入onPause()状态,系统调用第一个Activity的onRestart()方法(此处不是调用onCreate()方法,因为 第一个Activity只是进入停止状态没有销毁),然后再调用onStart()、onResume()方法进入消息监听。
7.onDestory():当退出应用程序时系统调用onDestory()方法。为了节约系统资源有时候需要手动销毁Activity这时候可以通过调用
this.finish()来手动销毁Activity,还有使用广播机制也可以终止Activity,具体代码实现如下:
二、查阅Android提供的SDK可以看到有如下流程图:public abstract class EnterActivity extends BaseActivity { ... // 写一个广播的内部类,当收到动作时,结束activity private BroadcastReceiver broadcastReceiver = new BroadcastReceiver() { @Override public void onReceive(Context context, Intent intent) { unregisterReceiver(this); // 这句话必须要写要不会报错,不写虽然能关闭,会报一堆错 ((Activity) context).finish(); } }; @Override public void onResume() { super.onResume(); // 在当前的activity中注册广播 IntentFilter filter = new IntentFilter(); filter.addAction(Attribute.PAGENAME); registerReceiver(this.broadcastReceiver, filter); // 注册 } public void close() { Intent intent = new Intent(); intent.setAction(Attribute.PAGENAME); // 说明动作 sendBroadcast(intent);// 该函数用于发送广播 finish(); } ... }
此流程图即是第一部分讲解的Activity流程。
大家可以实践一下查看Activity的各种运行状态详见mars老师的代码,此处就不粘贴了!