欢迎来到代码驿站!

Android代码

当前位置:首页 > 移动开发 > Android代码

Android 启动模式FLAG_ACTIVITY_CLEAR_TOP案例详解

时间:2022-11-13 10:14:48|栏目:Android代码|点击:

四种启动模式

  • 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 Gradle开发指南详解

栏    目:Android代码

下一篇:Flutter集成到已有iOS工程的方法步骤

本文标题:Android 启动模式FLAG_ACTIVITY_CLEAR_TOP案例详解

本文地址:http://www.codeinn.net/misctech/218906.html

推荐教程

广告投放 | 联系我们 | 版权申明

重要申明:本站所有的文章、图片、评论等,均由网友发表或上传并维护或收集自网络,属个人行为,与本站立场无关。

如果侵犯了您的权利,请与我们联系,我们将在24小时内进行处理、任何非本站因素导致的法律后果,本站均不负任何责任。

联系QQ:914707363 | 邮箱:codeinn#126.com(#换成@)

Copyright © 2020 代码驿站 版权所有