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

Posted kim_liu

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于返回首页功能的两种实现相关的知识,希望对你有一定的参考价值。

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

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

方案一

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

这种做法就是把当前栈内的所有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将会被从栈中清除。

 

以上是关于关于返回首页功能的两种实现的主要内容,如果未能解决你的问题,请参考以下文章

关于JSP网站开发技术中的两种模式分析

关于H5页面中生成图片的两种方式!

iOS:关于UIView切角的两种实现方式

关于跨域请求的两种方案

如何理解这段代码片段中的两对括号?

关于匿名内部类实现的两种方法