最近须要实现一个返回首页的功能,刚开始本身的基本思路就是清除当前站内的全部activity但不包括MainActivity,这种方法也不难,CSDN上一搜就找到了答案。android
方案一this
Intent intent = new Intent(this, MainActivity.class); intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK); startActivity(intent);
这种作法就是把当前栈内的全部activity所有清除,而后再新建一个MainActivity,这种是最暴力的一种实现方式,无论MainActivity首页是否存在都直接从新建立,很影响体验,而且会消耗流量。spa
方案二
为了节能减排,减小多余的消耗,下面咱们说说第二种实现方案。
通常首页MainActivity咱们会将其启动模式launcherMode设置为singleTask模式,这种模式下,只要任务栈内存在该activity就不会从新建立,直接复用。code
<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将会被从栈中清除。xml