Activity启动模式

  • standard: 每次启动都会创建
  • singleTop:跟 Standard 类似,当Activity在栈顶时复用
  • singleTask:一个栈只保持一个实例,并且会在重新启动Activity时清掉栈顶其它Activity
  • singleInstance: 独占一个任务栈

singleTask与singleInstance可以保证一个主Activity,但这两模式存在一个问题:从主Activity跳到子Activity后,按home键回要主桌面,再从桌面应用图标启动应用,会发现重新回到了主Activity。
解决方法:
Intent intent = new Intent( mContext , MainActivity. class );
intent.setFlags(Intent. FLAG_ACTIVITY_CLEAR_TOP | Intent. FLAG_ACTIVITY_SINGLE_TOP );
startActivity(intent);
 
    启动 Activity A 的请求在intent 中定义优先于在manifest 中定义.

    singleTop   FLAG_ACTIVITY_SINGLE_TOP
     如果在栈顶就复用,否则就新建。
     如果一个activity 的实例已经存在于当前任务的栈的顶端,系统通过调用它的onNewIntent() 方法把intent 路由到这个实例,而不是创建一个新的实例.activity 可以被多次实例化,每个实例可以属于不同的任务,并且一个任务可以具有多个实例( 但只是当位于后退栈的顶端的activity 不存在时才会出现这种现像)
    "singleTask"   FLAG_ACTIVITY_CLEAR_TOP
               如果栈里有,就弹出它上面所有的 Activity ,让它显示出来
不同于 Intent. FLAG_ACTIVITY_NEW_TASK ;
              
          1.  设置了 "singleTask" 启动模式的 Activity ,它在启动的时候,会先在系统中查找属性值 affinity 等于它的属性值 taskAffinity 的任务存在;如果存在这样的任务,它就会在这个任务中启动,否则就会在新任务中启动。因此,如果我们想要设置了 "singleTask" 启动模式的 Activity 在新的任务中启动,就要为它设置一个独立的 taskAffinity 属性值。    并且接下来启动的 Activity 都和它在同一个 task .
        2.  如果设置了 "singleTask" 启动模式的 Activity 不是在新的任务中启动时,它会在已有的任务中查看是否已经存在相应的 Activity 实例,如果存在,就会把位于这个 Activity 实例上面的 Activity 全部结束掉,即最终这个 Activity 实例会位于任务的堆栈顶端中。
     
     
    "singleInstance".
               独自占用一个栈
       跟"singleTask" 一样.除了系统不能再启动其它activity 到拥有这个activity 实例的任务中.activity 永远是任务的唯一;任何由这个activity 启动的其它activity 都在另一个任务中打开.
     
     
     如果 android:process 属性的值以 ":" 开头,则表示这个进程是私有的;如果 android:process 属性的值以小写字母开头,则表示这是一个全局进程,允许其它应用程序组件也在这个进程中运行。必须保证这个属性    字符串内至少有一个 "." 字符
      
      
     广播机制却是不可替代的,它和 Binder 机制不一样的地方在于,广播的发送者和接收者事先是不需要知道对方的存在的,这样带来的好处便是,系统的各个组件可以松耦合地组织在一起,这样系统就具有高度的可扩展性,容易与其它系统进行集成。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值