最近研究android内核,学习到android activity的启动模式,掌握好启动模式,对activity的处理例如关闭和开启,以及数据间的传输有很大的帮助。
看此博文前,请花点时间先看一下一个博主写的:http://www.cnblogs.com/lwbqqyumidi/p/3771542.html,有助于下面理解。。
我们同4个activity的启动来看其中的原理。。。。。。
下面是xml文件(很简单):
first.xml
其他的类似。。。。
通过standard启动:
4个activity的定义:
public class Activity1 extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Log.v("Standard", "activity1 oncreate");
setContentView(R.layout.first);
TextView textView=(TextView) findViewById(R.id.textView1);
TextView textIdView=(TextView) findViewById(R.id.textIdView1);
textView.setText(this.toString());
textIdView.setText("current task id:"+this.getTaskId());
Button bt=(Button) findViewById(R.id.button1);
bt.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent=new Intent(Activity1.this,Activity2.class);
startActivity(intent);
}
});
}
@Override
protected void onStart() {
super.onStart();
Log.v("Standard", "activity1 onStart");
}
@Override
protected void onPause() {
super.onPause();
Log.v("Standard", "activity1 onPause");
}
@Override
protected void onStop() {
super.onStop();
Log.v("Standard", "activity1 onStop");
}
@Override
protected void onDestroy() {
super.onDestroy();
Log.v("Standard", "activity1 onDestroy");
}
}
public class Activity2 extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.second);
Log.v("SingleInstance", "activity2 oncreate");
TextView textView=(TextView) findViewById(R.id.textView2);
TextView textIdView=(TextView) findViewById(R.id.textIdView2);
textView.setText(this.toString());
textIdView.setText("current task id:"+this.getTaskId());
Button bt = (Button) findViewById(R.id.button2);
bt.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(Activity2.this, Activity3.class);
startActivity(intent);
}
});
}
@Override
protected void onStart() {
super.onStart();
Log.v("SingleInstance", "activity2 onStart");
}
@Override
protected void onPause() {
super.onPause();
Log.v("SingleInstance", "activity2 onPause");
}
@Override
protected void onStop() {
super.onStop();
Log.v("SingleInstance", "activity2 onStop");
}
@Override
protected void onDestroy() {
super.onDestroy();
Log.v("SingleInstance", "activity2 onDestroy");
}
}
public class Activity3 extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.third);
Log.v("SingleInstance", "activity3 oncreate");
TextView textView=(TextView) findViewById(R.id.textView3);
TextView textIdView=(TextView) findViewById(R.id.textIdView3);
textView.setText(this.toString());
textIdView.setText("current task id:"+this.getTaskId());
Button bt = (Button) findViewById(R.id.button3);
bt.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(Activity3.this, Activity4.class);
startActivity(intent);
}
});
}
@Override
protected void onStart() {
super.onStart();
Log.v("SingleInstance", "activity3 onStart");
}
@Override
protected void onPause() {
super.onPause();
Log.v("SingleInstance", "activity3 onPause");
}
@Override
protected void onStop() {
super.onStop();
Log.v("SingleInstance", "activity3 onStop");
}
@Override
protected void onDestroy() {
super.onDestroy();
Log.v("SingleInstance", "activity3 onDestroy");
}
}
public class Activity4 extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.forth);
Log.v("SingleInstance", "activity4 oncreate");
TextView textView = (TextView) findViewById(R.id.textView4);
TextView textIdView = (TextView) findViewById(R.id.textIdView4);
textView.setText(this.toString());
textIdView.setText("current task id:"+this.getTaskId());
Button bt = (Button) findViewById(R.id.button4);
//bt.setText("forth go to forth");
bt.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//Intent intent = new Intent(Activity4.this, Activity4.class);
Intent intent = new Intent(Activity4.this, Activity1.class);
startActivity(intent);
}
});
}
@Override
protected void onStart() {
super.onStart();
Log.v("SingleInstance", "activity4 onStart");
}
@Override
protected void onPause() {
super.onPause();
Log.v("SingleInstance", "activity4 onPause");
}
@Override
protected void onStop() {
super.onStop();
Log.v("SingleInstance", "activity4 onStop");
}
@Override
protected void onDestroy() {
super.onDestroy();
Log.v("SingleInstance", "activity4 onDestroy");
}
}
AndroidManifest.xml的配置:<