关于返回首页功能的两种实现

最近需要实现一个返回首页的功能,刚开始自己的基本思路就是清除当前站内的所有activity但不包括MainActivity,这种方法也不难,CSDN上一搜就找到了答案。

方案一

Intent intent = new Intent(this, MainActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);

这种做法就是把当前栈内的所有activity全部清除,然后再新建一个MainActivity,这种是最暴力的一种实现方式,不管MainActivity首页是否存在都直接重新创建,很影响体验,并且会消耗流量。

方案二
为了节能减排,减少多余的消耗,下面我们说说第二种实现方案。
一般首页MainActivity我们会将其启动模式launcherMode设置为singleTask模式,这种模式下,只要任务栈内存在该activity就不会重新创建,直接复用。

<activity
    android:name=".MainActivity"android:launchMode="singleTask"android:screenOrientation="portrait"><intent-filter><action android:name="android.intent.action.MAIN" /><category android:name="android.intent.category.LAUNCHER" /></intent-filter>
</activity>
//使用的时候直接启动activity就可以啦
//在MainActivity之上的activity会自动被清除
//符合栈的后进先出原则
Intent intent = new Intent(this, MainActivity.class);
startActivity(intent);

这种方法要求比较高,不能定位到特定的activity,只能是首页MainActivity,这样才能保证逻辑上不会出错,如果需要在其他activity上使用逻辑上需要考虑是否符合当时的使用情景,当启动MainActivity之后栈内其上的activity将会被从栈中清除。

总结
其实方案二不是我等菜鸟能够想出来的,对android了解的甚少,对activity的任务站了解的也不够透彻,还有各种启动模式的标志位都不是很了解,多亏了博客大神任玉刚的书《android开发艺术探索》才能理解到这一层,多谢大神指点。最后希望这篇文章能够帮到希望学习的你。

android中实现返回首页功能相关推荐

  1. android返回到首页,android中实现返回首页功能

    关于返回首页功能的两种实现 最近需要实现一个返回首页的功能,刚开始自己的基本思路就是清除当前站内的所有activity但不包括MainActivity,这种方法也不难,CSDN上一搜就找到了答案. 方 ...

  2. android 轮换实现动画,怎么在Android中实现一个首页无限轮播功能

    怎么在Android中实现一个首页无限轮播功能 发布时间:2021-04-12 16:22:49 来源:亿速云 阅读:74 作者:Leah 这期内容当中小编将会给大家带来有关怎么在Android中实现 ...

  3. android java 8_四个库,让你在 Android 中启用 Java 8 功能

    Java 8 的推出引入很多革命性变化,加入了函数式编程的特征,使基于行为的编程成为可能,同时简化了各种设计模式的实现方式,是 Java 有史以来最重要的更新. 自 Android N 之后,由于 J ...

  4. Java乔晓松-android中调用系统拍照功能并显示拍照的图片

    android中调用系统拍照功能并显示拍照的图片 如果你是拍照完,利用onActivityResult获取data数据,把data数据转换成Bitmap数据,这样获取到的图片,是拍照的照片的缩略图 代 ...

  5. android 碎片技术,【移动开发】Android中强大的适配功能----Fragment(碎片)总结

    [移动开发]Android中强大的适配功能----Fragment(碎片)总结 发布时间:2020-06-27 00:32:58 来源:51CTO 阅读:10233 作者:zhf651555765 作 ...

  6. Android中实现一键分享功能

    在Android中开发中,我们会经常遇到使用一键分享的功能,今天我以使用第三方平台ShareSDK来实现一键分享向大家分享下具体的流程. 下面,我就以步骤顺序依次展示在自己的Android项目中如何实 ...

  7. Android中复制及粘贴功能

    工作中用到了Android的Copy and Paste功能,上官网http://developer.android.com/guide/topics/text/copy-paste.html#Cli ...

  8. Android中保存图片到本地功能实现

    文章转载自http://blog.csdn.net/ccpat/article/details/45314175  感谢原作者~ 本文描述将一个Bitmap对象保存为一个图片文件的主要步骤.保存的图片 ...

  9. android中最新webview的功能,Android WebView实现截长图功能

    本文实例为大家分享了Android实现截长图功能的具体代码,供大家参考,具体内容如下 先看看手机自带的长截屏功能:  机型: vivo x9 plus 大胆推测实现逻辑: 1:需要一个可以滚动的Vie ...

最新文章

  1. 抖音用户规模达5.18亿,数据解读抖音支付背后逻辑?
  2. nlp mrc的损失是什么_你对NLP的迁移学习爱的有多深?21个问题弄懂最新的NLP进展...
  3. 课程介绍 复习 创建对象的三种方式 自定义构造函数创建对象 工厂模式创建对象
  4. SAP Spartacus page-slot.component.html
  5. Coding the Matrix Week 1 The vector 作业
  6. C语言结构体对齐[转]
  7. [转载] python中pprint模块详解——print()和pprint()两者的区别
  8. 高职高专教材c语言,高职《C语言程序设计》教材建设研究
  9. matlab中怎么看电压和电流值,matlab计算电压有效值
  10. 如何将windows桌面默认位置修改为D盘
  11. 表示偏移地址的寄存器
  12. 三点组成的三角形的面积计算公式(海伦公式)
  13. 【BZOJ】1778: [Usaco2010 Hol]Dotp 驱逐猪猡
  14. 4.6Bootstrap学习js插件篇之弹出框
  15. Go Web 编程 PDF
  16. 淘宝平台自研系统入驻流程
  17. Android学习之 两个Fragment之间传递信息
  18. 全新出炉:7 月编程语言最新排行榜
  19. 联发科p60和骁龙710哪个好_骁龙710、麒麟710和联发科P60性能对比测试 哪个好?...
  20. linux下载/解压ImageNet-1k数据集

热门文章

  1. 数据库原理 - 序列5 - 事务是如何实现的? - Undo Log解析
  2. SpringBoot2.0之 个性化Banner
  3. tomcat 的安全规范
  4. 微信内置浏览器的JsAPI(WeixinJSBridge续)[转载]
  5. Lua date format
  6. SQL - SQL 连接 JOIN 例解。(左连接,右连接,全连接,内连接,交叉连接,自连接)[转]...
  7. const与readonly,析构函数,虚拟方法
  8. 学习LINUX第三天:最简单的LAMP组合(适合初学者)
  9. Coding Interview Guide--打印两个有序链表的公共部分
  10. BZOJ.3004.[SDOI2012]吊灯(结论)