Android Activity生命周期以及LoCat的使用
2011-03-15 21:51
477 查看
Activity主要有三个状态:
当在屏幕前台时(位于当前任务堆栈的顶部),它是活跃或运行的状态。它就是相应用户操作的Activity。
当它失去焦点但仍然对用户可见时,它处于暂停状态。即:在它之上有另外一个Activity。这个Activity也许是透明的,或者未能完全遮蔽全屏,
所以被暂停的Activity仍对用户可见。暂停的Activity仍然是存活状态(它保留着所有的状态和成员信息并连接至窗口管理器),但当系统处于极
低内存的情况下,仍然可以杀死这个Activity。
如果它完全被另一个Activity覆盖时,它处于停止状态。它仍然保留所有的状态和成员信息。然而它不再为用户可见,所以它的窗口将被隐藏,如果其他地方需要内存,则系统经常会杀死这个Activity。
API里Activity的生命周期图:
Activity继承了ApplicationContext这个类,Activity的生命周期由下面七个方法实现:
在学习Activity的生命周期时,为了更好理解Activity的生命周期,我基本重写了这七个方法,并用
android.util.log这个类的静态方法打印出来,
这个类相当的简单易用,因为它提供的全是一些静态方法:
下面是重写后的两个Activity的代码清单:FirstActivity
SecondActivity:
代码没什么特别的,运行工程效果图如下:
重点在Logcat视窗里,打开应用时先后执行了onCreate()->onStart()->onResume三个方法,看一下LogCat视窗如下:
当点击启动到第二个Activity时,FirstActivity执行了onPause->onStop,SecondActivity执行了onCreate()->onStart()->onResume方法,看Logcat视窗:
BACK键:
当按BACK键时,返回FirstActivity,这时候FirstActivity不是调用onCreate()->onStart()->onResume三个方法,而是调用onReStart->onStart->onResume,如下图所示:
而SecondActivity一次调用了onPause->onStop->onDestory,看图:
这样基本可以看到Activity的生命周期了,虽然有些还是有点不明了,但基本可以理解了
当在屏幕前台时(位于当前任务堆栈的顶部),它是活跃或运行的状态。它就是相应用户操作的Activity。
当它失去焦点但仍然对用户可见时,它处于暂停状态。即:在它之上有另外一个Activity。这个Activity也许是透明的,或者未能完全遮蔽全屏,
所以被暂停的Activity仍对用户可见。暂停的Activity仍然是存活状态(它保留着所有的状态和成员信息并连接至窗口管理器),但当系统处于极
低内存的情况下,仍然可以杀死这个Activity。
如果它完全被另一个Activity覆盖时,它处于停止状态。它仍然保留所有的状态和成员信息。然而它不再为用户可见,所以它的窗口将被隐藏,如果其他地方需要内存,则系统经常会杀死这个Activity。
API里Activity的生命周期图:
Activity继承了ApplicationContext这个类,Activity的生命周期由下面七个方法实现:
public class Activity extends ApplicationContext { protected void onCreate(Bundle savedInstanceState); protected void onStart(); protected void onRestart(); protected void onResume(); protected void onPause(); protected void onStop(); protected void onDestroy(); }
在学习Activity的生命周期时,为了更好理解Activity的生命周期,我基本重写了这七个方法,并用
android.util.log这个类的静态方法打印出来,
这个类相当的简单易用,因为它提供的全是一些静态方法:
Log.v(String tag, String msg); //VERBOSE Log.d(String tag, String msg); //DEBUG Log.i(String tag, String msg); //INFO Log.w(String tag, String msg); //WARN Log.e(String tag, String msg); //ERROR
下面是重写后的两个Activity的代码清单:FirstActivity
package blog.activity.demo; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.util.Log; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; public class FirstActivity extends Activity { private final static String TAG = "FIRSTACITVITY"; private Button myButton; @Override public void onCreate(Bundle savedInstanceState) { Log.v(TAG, "FirstAcvity ---> onCreate"); super.onCreate(savedInstanceState); setContentView(R.layout.main); myButton = (Button)findViewById(R.id.myButton); myButton.setText("启动第二个Activity"); myButton.setOnClickListener(new ButtonOnClickListener()); } @Override protected void onDestroy() { // TODO Auto-generated method stub Log.v(TAG, "FirstAcvity --->onDestory"); super.onDestroy(); } @Override protected void onPause() { // TODO Auto-generated method stub/ Log.v(TAG, "FirstAcvity --->onPause"); super.onPause(); } @Override protected void onRestart() { // TODO Auto-generated method stub Log.v(TAG, "FirstAcvity --->onRestart"); super.onRestart(); } @Override protected void onResume() { // TODO Auto-generated method stub Log.v(TAG, "FirstAcvity --->onResume"); super.onResume(); } @Override protected void onStart() { // TODO Auto-generated method stub Log.v(TAG, "FirstAcvity --->onStart"); super.onStart(); } @Override protected void onStop() { // TODO Auto-generated method stub Log.v(TAG, "FirstAcvity --->onStop"); super.onStop(); } class ButtonOnClickListener implements OnClickListener{ @Override public void onClick(View v) { Intent intent = new Intent(); intent.setClass(FirstActivity.this,SecondActivity.class); FirstActivity.this.startActivity(intent); } } }
SecondActivity:
package blog.activity.demo; import android.app.Activity; import android.os.Bundle; import android.util.Log; public class SecondActivity extends Activity { private final static String TAG = "SECONDACITVITY"; @Override protected void onCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub Log.v(TAG, "FirstAcvity ---> onCreate"); super.onCreate(savedInstanceState); } @Override protected void onDestroy() { // TODO Auto-generated method stub Log.v(TAG, "SecondActivity --->onDestory"); super.onDestroy(); } @Override protected void onPause() { // TODO Auto-generated method stub Log.v(TAG, "SecondActivity--->onPause"); super.onPause(); } @Override protected void onRestart() { // TODO Auto-generated method stub Log.v(TAG, "SecondActivity--->onRestart"); super.onRestart(); } @Override protected void onResume() { // TODO Auto-generated method stub Log.v(TAG, "SecondActivity--->onResume"); super.onResume(); } @Override protected void onStart() { // TODO Auto-generated method stub Log.v(TAG, "SecondActivity--->onStart"); super.onStart(); } @Override protected void onStop() { // TODO Auto-generated method stub Log.v(TAG, "SecondActivity--->onStop"); super.onStop(); } }
代码没什么特别的,运行工程效果图如下:
重点在Logcat视窗里,打开应用时先后执行了onCreate()->onStart()->onResume三个方法,看一下LogCat视窗如下:
当点击启动到第二个Activity时,FirstActivity执行了onPause->onStop,SecondActivity执行了onCreate()->onStart()->onResume方法,看Logcat视窗:
BACK键:
当按BACK键时,返回FirstActivity,这时候FirstActivity不是调用onCreate()->onStart()->onResume三个方法,而是调用onReStart->onStart->onResume,如下图所示:
而SecondActivity一次调用了onPause->onStop->onDestory,看图:
这样基本可以看到Activity的生命周期了,虽然有些还是有点不明了,但基本可以理解了
相关文章推荐
- Android中activity的生命周期以及使用场景
- android activity的生命周期 以及横竖屏切换
- Android笔记:Activity的生命周期以及启动模式
- Android Fragment生命周期图以及Activity与Fragment生命周期对照图
- Android使用Webview显示页面以及点击跳转startActivity问题
- Android开发之漫漫长途 Ⅰ——Android系统的创世之初以及Activity的生命周期
- Android Activity的生命周期以及用法建议
- 【Android基础笔记05】Activity生命周期以及Activity之间的传值
- Android横竖屏切换, 手机锁屏以及按Home键和返回键时的Activity的生命周期
- Activity生命周期的学习以及Logcat的使用 (五)
- Android Activity生命周期以及Fragment生命周期的区别与分析
- [android] Activity 的生命周期 以及横屏竖屏切换时 Activity 的状态变化
- android Activity 的生命周期 以及横屏竖屏切换时 Activity 的状态变化
- 【Activity】AndroidManifest.xml中android:configChanges以及Activity的生命周期实测
- android 没有main函数,怎么找到程序执行入口呢?以及activity主要生命周期的方法说明
- Android的Activity生命周期以及四种启动模式
- Android中Activity生命周期说明及使用
- 单击Android设备后退键,主屏幕键以及旋转屏幕如何影响Activity的生命周期
- android 点击返回键 以及 加载activity 生命周期 记录。。。,一目了然
- Android 开发之漫漫长途Ⅰ—Android 系统的创世之初以及 Activity 的生命周期