您的位置:首页 > 移动开发 > Android开发

Android之Activity生命周期的理解

2014-03-29 20:50 351 查看


1.启动Activity:系统会先调用onCreate方法,然后调用onStart方法,最后调用onResume,Activity进入运行状态。

2.当前Activity被其他Activity覆盖其上或被锁屏:系统会调用onPause方法,暂停当前Activity的执行。

3.当前Activity由被覆盖状态回到前台或解锁屏:系统会调用onResume方法,再次进入运行状态。

4.当前Activity转到新的Activity界面或按Home键回到主屏,自身退居后台:系统会先调用onPause方法,然后调用onStop方法,进入停滞状态。

5.用户后退回到此Activity:系统会先调用onRestart方法,然后调用onStart方法,最后调用onResume方法,再次进入运行状态。

6.当前Activity处于被覆盖状态或者后台不可见状态,即第2步和第4步,系统内存不足,杀死当前Activity,而后用户退回当前Activity:再次调用onCreate方法、onStart方法、onResume方法,进入运行状态。

7.用户退出当前Activity:系统先调用onPause方法,然后调用onStop方法,最后调用onDestory方法,结束当前Activity。

下面以实际例子说明:

界面布局代码就不发了,没什么,就Textview和Button两组控件。

MainActivity类中主要代码

public class MainActivity extends Activity implements OnClickListener {

private Button bt1;

private Button bt2;

 

private static final String TAG="MainActivity";

@Override

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.activity_main);

Log.i(TAG, "MainActivity.onCreate");

bt1=(Button)this.findViewById(R.id.bt1);

bt2=(Button)this.findViewById(R.id.bt2);

bt1.setOnClickListener(this);

bt2.setOnClickListener(this);

}

protected void onDestory(){

super.onDestroy();

Log.i(TAG,"MainActivity.onDestory");

4000
}

@Override

public void onClick(View v) {

 

 switch (v.getId()) {

case R.id.bt1:

Intent intent=new Intent();

intent.setClass(MainActivity.this, SecondActivity.class);

startActivity(intent);

break;

case R.id.bt2:

 Intent intent1=new Intent();

intent1.setClass(MainActivity.this, ThirdActivity.class);

startActivity(intent1);

break;

    

 

default:

break;

}

 

   

   

}

protected void onStart(){

super.onStart();

Log.i(TAG, "MainActivity.onStart");

}

protected void onResume(){

super.onResume();

Log.i(TAG, "MainActivity.onResume");

}

protected void onPause(){

super.onPause();

Log.i(TAG, "MainActivity.onPause");

}

protected void onStop(){

super.onStop();

Log.i(TAG, "MainActivity.onStop");

}

protected void onRestart(){

super.onRestart();

Log.i(TAG, "MainActivity.onRestart");

}

 

 

}

SecondActivity类中主要代码

public class SecondActivity extends Activity{

private static final String TAG="MainActivity";

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.second);

Log.i(TAG, "SecondActivity.onCreate");

}

 

protected void onDestory(){

super.onDestroy();

Log.i(TAG,"SecondActivity.onDestory");

}

protected void onStart(){

super.onStart();

Log.i(TAG, "SecondActivity.onStart");

}

protected void onResume(){

super.onResume();

Log.i(TAG, "SecondActivity.onResume");

}

protected void onPause(){

super.onPause();

Log.i(TAG, "SecondActivity.onPause");

}

protected void onStop(){

super.onStop();

Log.i(TAG, "SecondActivity.onStop");

}

protected void onRestart(){

super.onRestart();

Log.i(TAG, "SecondActivity.onRestart");

}

 

}

ThirdActivity类中主要代码

public class ThirdActivity extends Activity{

private static final String TAG="MainActivity";

protected void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.third);

Log.i(TAG, "ThirdActivity.onCreate");

}

protected void onDestory(){

super.onDestroy();

Log.i(TAG,"ThirdActivity.onDestory");

}

protected void onStart(){

super.onStart();

Log.i(TAG, "ThirdActivity.onStart");

}

protected void onResume(){

super.onResume();

Log.i(TAG, "ThirdActivity.onResume");

}

protected void onPause(){

super.onPause();

Log.i(TAG, "ThirdActivity.onPause");

}

protected void onStop(){

super.onStop();

Log.i(TAG, "ThirdActivity.onStop");

}

protected void onRestart(){

super.onRestart();

Log.i(TAG, "ThirdActivity.onRestart");

}

}

Activity生命周期运行步骤如下
1.运行程序,进入Activity



MainActivit启动了onCreate、onStart、onResume方法运行程序,Log日志如下图



2.点击进入第二个Activity



此时,Log日志显示如下图



3.点击返回键,回到MainActivity



此时Log日志显示如下图



4.点击进入第三个Activity,显示如下



Log日志显示如下



5.点击返回键,回到MainActivity



Log日志显示如下



6.点击home键回桌面



Log日志显示如下



从头到尾都没有调用onDestory方法,这是为什么,请大神赐教?

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息