SingleTop啟動模式真的可以防止多次打開棧頂的Activity么
首先要知道什么是singleTop?
有新的頁面啟動請求時,當目標Activity處于當前棧頂時,會調用Activity的onNewIntent()方法,但不創建新實例。如果棧頂沒有目標Activity則創建。
實際操作:
? ? 先在AndroidManifest.xml中將目標activity中的屬性launchMode設置成singleTop,然后在activity中設置onClick事件。
圖1
圖1中點擊事件確實可以防止手動連續多次點擊,跳轉頁面。
但是,如果在代碼中多次跳轉頁面呢:
圖2
圖2中,如果是程序執行的多次跳轉同一個目標頁面,startActivty無法反映過來,還沒來得及判斷目標頁面是否是singleTop的啟動模式,就已經跳轉過去了。可能是代碼比xml屬性更先執行(具體情況可以了解下startActivty啟動的流程)。所以可以用以下方法來解決這種問題:
圖3
在intent中設置flag,這樣就保證了,只會有一個。