Activity启动模式

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
系统中很多应用共用一个应用。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值