首先上个官方图:http://developer.android.com/reference/android/app/Activity.html
程序两个Activity:
1、Activity 的普通跳转:
有图可见,
1、启动app。
会调用onCreate(初始化Activity),onStart(显示Activity),onResume(到这一个方法用户才能和Activity进行交互)。
2、点击按钮跳转到Activity2。
首先会调用Activity1的onPause,然后再调用Activity2的onCreate,onStart,onResume,至此显示Activity2,最后调用Activity1的onStop。
此时栈中有两个Activity。
3、点击返回键。
首先调用Activity2的onPause,等待Activity1显示,然后再调用Activity2的onStop,再调用onDestroy,把Activity2移出栈顶。
4、再次点击返回键。
onPause,onStop,onDestroy,把Activity1移出栈顶。
2、两个Activity 相互跳转
1、启动app。
栈顶存在Activity1.
2、点击按钮跳到Activity2。
此时栈顶是Activity2,栈底是Activity1.
3、点击按钮跳到下一个Activity。
此时栈中有3个Activity。
4、点击返回。
栈顶的Activity3销毁,显示Activity2.
5、点击返回。
Activity2销毁。
6、点击返回。
退出。
3、在显示Activity的情况下,直接返回桌面
在显示一个Activity的情况下,点击home返回桌面的时候,Activity并没有销毁。原理是一样的,只是显示了一个桌面Activity。
4、调用 finish()
在执行finish方法的时候,并不会马上销毁Activity,而是执行一系列的生命周期,onPause,等待其它Activity启动,然后onStop,onDestroy。
代码:
package com.example.lifecycleactivity;
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 MainActivity extends Activity {
private Button btn;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Log.e("test", "LifeCycleActivity1====onCreate");
btn = (Button) this.findViewById(R.id.button1);
btn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
startActivity(new Intent(MainActivity.this, SecondActivity.class));
}
});
}
@Override
protected void onDestroy() {
Log.e("test", "LifeCycleActivity1====onDestroy");
super.onDestroy();
}
@Override
protected void onPause() {
Log.e("test", "LifeCycleActivity1====onPause");
super.onPause();
}
@Override
protected void onRestart() {
Log.e("test", "LifeCycleActivity1====onRestart");
super.onRestart();
}
@Override
protected void onResume() {
Log.e("test", "LifeCycleActivity1====onResume");
super.onResume();
}
@Override
protected void onStart() {
Log.e("test", "LifeCycleActivity1====onStart");
super.onStart();
}
@Override
protected void onStop() {
Log.e("test", "LifeCycleActivity1====onStop");
super.onStop();
}
}
SecondActivity
package com.example.lifecycleactivity;
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 SecondActivity extends Activity {
private Button btn_nextActivity;
private Button btn_callFinish;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_second);
Log.e("test", "LifeCycleActivity2====onCreate");
btn_nextActivity = (Button) this.findViewById(R.id.button1);
btn_nextActivity.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
startActivity(new Intent(SecondActivity.this, MainActivity.class));
}
});
btn_callFinish = (Button) this.findViewById(R.id.button2);
btn_callFinish.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
finish();
}
});
}
@Override
protected void onDestroy() {
Log.e("test", "LifeCycleActivity2====onDestroy");
super.onDestroy();
}
@Override
protected void onPause() {
Log.e("test", "LifeCycleActivity2====onPause");
super.onPause();
}
@Override
protected void onRestart() {
Log.e("test", "LifeCycleActivity2====onRestart");
super.onRestart();
}
@Override
protected void onResume() {
Log.e("test", "LifeCycleActivity2====onResume");
super.onResume();
}
@Override
protected void onStart() {
Log.e("test", "LifeCycleActivity2====onStart");
super.onStart();
}
@Override
protected void onStop() {
Log.e("test", "LifeCycleActivity2====onStop");
super.onStop();
}
}
记得注册Activity。