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

最近需要实现一个返回首页的功能,刚开始自己的基本思路就是清除当前站内的所有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开发艺术探索》才能理解到这一层,多谢大神指点。最后希望这篇文章能够帮到希望学习的你。

更多相关文章

  1. Android(安卓)框架启动流程
  2. Android(安卓)AM命令及使用
  3. Flutter踩坑记录
  4. Android(安卓)优雅地退出App
  5. android启动过程配置文件的解析与语法 .
  6. Android(安卓)- 使用Intent来启动Activity
  7. TaskAffinity
  8. Android(安卓)8.0 Service源码分析:启动流程及后台限制详解
  9. Android(安卓)studio 为项目添加启动等待界面

随机推荐

  1. Mac 下Idea开发android项目,模拟发短信
  2. 如何在代码里打开Android手机通知状态栏
  3. 【Android】TextView中Spannable对象的使
  4. Android蓝牙
  5. Android中AnimationDrawable,Animator和A
  6. 我想邀请你和我一起写Android(福利回赠)
  7. Android(安卓)开发笔记 第三季 FragmentP
  8. Android2.1 短信应用解析
  9. android mtk平台内置apk,可卸载恢复出厂设
  10. android设备管理器.md