标签:des android c style class blog
voidonCreate(BundlesavedInstanceState)
2、//启动activity时被回调
voidonStart()
3、voidonRestart()
4、//恢复activity时被回调的方法
//只要执行onstart肯定会执行
voidonResume()
5、//暂停activity时被回调的方法
voidonPause()
6、//停止activity时被回调的方法
voidonStop()
7、//销毁activity时被回调的方法
//只会被调用一次
voidonDestroy()
七个生命周期方法中嵌套了三个生命周期循环。
三个生命周期循环如图所示
Activity的完整生命周期自第一次调用onCreate()开始,直至调用onDestroy()为止。Activity在onCreate()中设置所有“全局”状态以完成初始化,而在onDestroy()中释放所有系统资源。例如,如果Activity有一个线程在后台运行从网络下载数据,它会在onCreate()创建线程,而在onDestroy()销毁线程。
Activity的可视生命周期自onStart()调用开始直到相应的onStop()调用结束。在此期间,用户可以在屏幕上看到Activity,尽管它也许并不是位于前台或者也不与用户进行交互。在这两个方法之间,我们可以保留用来向用户显示这个Activity所需的资源。例如,当用户不再看见我们显示的内容时,我们可以在onStart()中注册一个BroadcastReceiver来监控会影响UI的变化,而在onStop()中来注消。onStart()和 onStop()方法可以随着应用程序是否为用户可见而被多次调用。
Activity的前台生命周期自onResume()调用起,至相应的onPause()调用为止。在此期间,Activity位于前台最上面并与用户进行交互。Activity会经常在暂停和恢复之间进行状态转换——例如当设备转入休眠状态或者有新的Activity启动时,将调用onPause()方法。当Activity获得结果或者接收到新的Intent时会调用onResume()方法。
三、测试Activity生命周期
目标:1、测试当原Activity未被完全覆盖时 2、测试当测试当原Activity被完全覆盖时
创建三个界面
在AndroidManifest.xml中以第一个Activity启动。并将第三个Activity设置属性android:theme="@android:style/Theme.Dialog,在启动第三个activity时就会以窗口形式打开。
具体MainActivity.java代码实现如下:
package www.gxw.com.activitylife; import android.app.Activity; import android.app.AlertDialog; import android.app.AlertDialog.Builder; import android.content.DialogInterface; import android.content.DialogInterface.OnClickListener; import android.content.Intent; import android.os.Bundle; import android.util.Log; import android.view.View; import android.widget.EditText; import android.widget.Toast; public class MainActivity extends Activity { private static final String TAG = "mainActivity"; //创建activity时被回掉,这个方法只会被调用一次 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); Log.i(TAG, "-----------onCreate----"); } //启动activity时被回调 @Override protected void onStart() { // TODO Auto-generated method stub super.onStart(); Log.i(TAG, "-----------onStart----"); } @Override protected void onRestart() { // TODO Auto-generated method stub super.onRestart(); Log.i(TAG, "-----------onRestart----"); } //恢复activity时被回调的方法 //只要执行onstart肯定会执行 @Override protected void onResume() { // TODO Auto-generated method stub super.onResume(); Log.i(TAG, "-----------onResume----"); } //暂停activity时被回调的方法 @Override protected void onPause() { // TODO Auto-generated method stub super.onPause(); Log.i(TAG, "-----------onPause----"); } //停止activity时被回调的方法 @Override protected void onStop() { // TODO Auto-generated method stub super.onStop(); Log.i(TAG, "-----------onStop----"); } //销毁activity时被回调的方法 //只会被调用一次 @Override protected void onDestroy() { // TODO Auto-generated method stub super.onDestroy(); Log.i(TAG, "-----------onDestroy----"); } @Override protected void onSaveInstanceState(Bundle outState) { // TODO Auto-generated method stub outState.putString("name", "liming"); Log.i(TAG, "----------onSaveInstanceState--------------"); super.onSaveInstanceState(outState); } //打开第三个activity public void openDialog(View v) { Intent intent = new Intent(); intent.setClass(MainActivity.this, ThirdActivity.class); startActivity(intent); } //打开第二个activity public void openActivity(View v) { // TODO Auto-generated method stub Intent intent = new Intent(); intent.setClass(MainActivity.this, SecondActivity.class); startActivity(intent); } }
测试结果如下:
当Activity启动时:
当Activity结束时:
当Activity被完全覆盖时:
完全覆盖返回时:
不完全覆盖时:
不完全覆盖返回时:
分析结果:
标签:des android c style class blog
原文地址:http://blog.csdn.net/onepiece2/article/details/28627141