關於返回首頁功能的兩種實現

關於返回首頁功能的兩種實現

最近須要實現一個返回首頁的功能,剛開始本身的基本思路就是清除當前站內的全部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);
  • 1
  • 2
  • 3

這種作法就是把當前棧內的全部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

相關文章
相關標籤/搜索