美文网首页
Android 启动模式FLAG_ACTIVITY_CLEAR_

Android 启动模式FLAG_ACTIVITY_CLEAR_

作者: 天青色等Y雨 | 来源:发表于2020-01-10 14:54 被阅读0次
    四种启动模式
    • standard: 只要被启动就会创建一个新的

    • singleTop: 栈顶复用(当被启动的Activity处于Task栈顶时,可以复用,直接调用onNewIntent方法)

    • singleTask: 栈中复用(被启动的Activity已经处于栈中,会将上边的Activity清除出栈,调用onNewIntent)

    • singleInstance 全局单实例(应用场景:地图,Activity初始化需要大量资源)

    Intent的标志位FLAG
    • Intent.FLAG_ACTIVITY_SINGLE_TOP 与加载模式singleTop功能相同

    • Intent.FLAG_ACTIVITY_CLEAR_TOP 销毁目标Activity和它之上的所有Activity,重新创建目标Activity

    例: A,B,C,D四个Activity,启动模式均为默认,依次启动,在D中启动B。
    • 添加Intent.FLAG_ACTIVITY_CLEAR_TOP

      效果: C,D清除出栈;B被finish掉,重新启动,重走生命周期,不会走onNewIntent()方法

    Intent intent = new Intent(this,B.class);
    intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
    d.startActivity(intent);
    
    • 添加Intent.FLAG_ACTIVITY_CLEAR_TOP和Intent.FLAG_ACTIVITY_SINGLE_TOP

      效果:C,D清除出栈,B调用onNewIntent()方法

    Intent intent = new Intent(this,B.class);
    intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);
    d.startActivity(intent);
    
    • 添加Intent.FLAG_ACTIVITY_CLEAR_TOP和Intent.FLAG_ACTIVITY_REORDER_TO_FRONT

      效果:C,D清除出栈,B回到前台, 调用onResume()方法

    Intent intent = new Intent(this,B.class);
    intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
    d.startActivity(intent);
    
    • App的退出登录功能:启动LoginActivity,且栈中只有一个LoginActivity
    Intent intent = new Intent(activity,LoginActivity.class);
    intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK);
    startActivity(intent);
    

    相关文章

      网友评论

          本文标题:Android 启动模式FLAG_ACTIVITY_CLEAR_

          本文链接:https://www.haomeiwen.com/subject/ffmroctx.html