返回顶部
首页 > 资讯 > 移动开发 >Android 启动模式FLAG_ACTIVITY_CLEAR_TOP案例详解
  • 530
分享到

Android 启动模式FLAG_ACTIVITY_CLEAR_TOP案例详解

2024-04-02 19:04:59 530人浏览 八月长安
摘要

四种启动模式 standard: 只要被启动就会创建一个新的 singleTop: 栈顶复用(当被启动的Activity处于Task栈顶时,可以复用,直接调用o

四种启动模式

  • 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_TOP案例详解的文章就介绍到这了,更多相关Android 启动模式FLAG_ACTIVITY_CLEAR_TOP内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

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

本文链接: https://lsjlt.com/news/133740.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作