Activity启动模式
<activity android:name=".MainActivity" android:launchMode="standard">
1,标准模式:每次激活Activity时都会创建Activity实例,并放入任务栈中
2,single Top:如果在任务的栈顶正好存在该Activity的实例,就重用该实例(会调用实例的onNewIntent()),否则就会创建新的实例并放入栈顶(即使栈中已经存在该Activity的实例,只要不在栈顶,都会 创建实例)
3,single Task:如果栈中已经有该Activity的实例,就重用该实例(会调用实例的onNewIntent())。重用时,会让该实例回到栈顶,因此在它上面的实例将会被移除栈。如果栈中不存在该实例,将会创建新的实例放入栈中。,4,singleInstance:在一个新栈中创建该Activity的实例,并让多个应用共享该栈中的该Activity实例。一旦该模式的Activity的实例已经存在于某个栈中,任何应用再激活该Activity时都会重用该栈中的实例(会调用实例的onNewIntent())。其效果相当于多个应用共享一个应用,不管谁激活该Activity都会进入同一个应用中。
4,singleInstance
测试
1,standard
主页面有按钮可以点击打开自身Activity,观察到textView的数值发生变化
public class MainActivity extends Activity{
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
TextView textView=(TextView)this.findViewById(R.id.textView);
textView.setText(this.toString());
}
点击按钮事件
public void openStandardActivity(View v){
startActivity(new Intent(this,MainActivity.class));
}
}
2, single Top
MainActivity上有按钮可以点击打开SingleTopActivity,在栈顶新建实例。在SingleTopActivity上有按钮打开自身,此时的打开自身就重用了栈顶的Activity实例;
MainActivity
public class MainActivity extends Activity{
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
TextView textView=(TextView)this.findViewById(R.id.textView);
textView.setText(this.toString());
}
按钮事件
public void openSingleTopActivity(View v)
{
startActivity(new Intent(this,SingleTopActivity.class));
}
新建SingleTopActivity
public class SingleTopActivity extends Activity{{
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.singletop);
TextView textView=(TextView)this.findViewById(R.id.textView);
textView.setText(this.toString());
}
@override
protected void onNewIntent(Intent intent){
Toast.makeText(this,new Date().toString(),1).show();
super.onNewIntent(intent);
}
public void openSingleTopActivity(View v)
{
startActivity(new Intent(this,SingleTopActivity.class));
}
}
3,single task
MainActivity上有按钮可以点击打开SingleTaskActivity
SingleTaskActivity有按钮打开MainActivity,
打开顺序为:MainActivity1----SingleTask----MainActivity2----SingleTask 从MainActivity2到SingleTask时删除栈顶的MainActivity2,使栈中SingleTaskActivity成为新栈顶实例。
4,SingleInstance
系统中很多应用共用一个应用。
<activity android:name=".MainActivity" android:launchMode="standard">
1,标准模式:每次激活Activity时都会创建Activity实例,并放入任务栈中
2,single Top:如果在任务的栈顶正好存在该Activity的实例,就重用该实例(会调用实例的onNewIntent()),否则就会创建新的实例并放入栈顶(即使栈中已经存在该Activity的实例,只要不在栈顶,都会 创建实例)
3,single Task:如果栈中已经有该Activity的实例,就重用该实例(会调用实例的onNewIntent())。重用时,会让该实例回到栈顶,因此在它上面的实例将会被移除栈。如果栈中不存在该实例,将会创建新的实例放入栈中。,4,singleInstance:在一个新栈中创建该Activity的实例,并让多个应用共享该栈中的该Activity实例。一旦该模式的Activity的实例已经存在于某个栈中,任何应用再激活该Activity时都会重用该栈中的实例(会调用实例的onNewIntent())。其效果相当于多个应用共享一个应用,不管谁激活该Activity都会进入同一个应用中。
4,singleInstance
测试
1,standard
主页面有按钮可以点击打开自身Activity,观察到textView的数值发生变化
public class MainActivity extends Activity{
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
TextView textView=(TextView)this.findViewById(R.id.textView);
textView.setText(this.toString());
}
点击按钮事件
public void openStandardActivity(View v){
startActivity(new Intent(this,MainActivity.class));
}
}
2, single Top
MainActivity上有按钮可以点击打开SingleTopActivity,在栈顶新建实例。在SingleTopActivity上有按钮打开自身,此时的打开自身就重用了栈顶的Activity实例;
MainActivity
public class MainActivity extends Activity{
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
TextView textView=(TextView)this.findViewById(R.id.textView);
textView.setText(this.toString());
}
按钮事件
public void openSingleTopActivity(View v)
{
startActivity(new Intent(this,SingleTopActivity.class));
}
新建SingleTopActivity
public class SingleTopActivity extends Activity{{
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.singletop);
TextView textView=(TextView)this.findViewById(R.id.textView);
textView.setText(this.toString());
}
@override
protected void onNewIntent(Intent intent){
Toast.makeText(this,new Date().toString(),1).show();
super.onNewIntent(intent);
}
public void openSingleTopActivity(View v)
{
startActivity(new Intent(this,SingleTopActivity.class));
}
}
3,single task
MainActivity上有按钮可以点击打开SingleTaskActivity
SingleTaskActivity有按钮打开MainActivity,
打开顺序为:MainActivity1----SingleTask----MainActivity2----SingleTask 从MainActivity2到SingleTask时删除栈顶的MainActivity2,使栈中SingleTaskActivity成为新栈顶实例。
4,SingleInstance
系统中很多应用共用一个应用。