ntent的FLAG_ACTIVITY_CLEAR_TOP和FLAG_ACTIVITY_REORDER_TO_FRONT

Activity的兩種啓動模式:FLAG_ACTIVITY_CLEAR_TOP和FLAG_ACTIVITY_REORDER_TO_FRONT

 

1. 如果已經啓動了四個Activity:A,B,C和D。在D Activity裏,我們要跳到B Activity,同時希望C finish掉,可以在startActivity(intent)裏的intent裏添加flags標記,如下所示:

Java代碼  收藏代碼
  1. Intent intent = new Intent(this, B.class);   
  2. intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);  
  3. startActivity(intent);  

 

  這樣啓動B Activity,就會把D,C都finished掉,如果你的B Activity的啓動模式是默認的(multiple ,則B Activity會finished掉,再啓動一個新的Activity B。

  如果不想重新再創建一個新的B Activity,則在上面的代碼裏再加上:

Java代碼  收藏代碼
  1. intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);   

 

 這樣B Activity就會再創建一個新的了,而是會重用之前的B Activity,同時調用B Activity的onNewIntent()方法。

 

2. 如果已經啓動了四個Activity:A,B,C和D,在D Activity裏,想再啓動一個Actvity B,但不變成A,B,C,D,B,而是希望是A,C,D,B,則可以像下面寫代碼:

Java代碼  收藏代碼
  1. Intent intent = new Intent(this, MainActivity.class);  
  2. intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);   
  3. startActivity(intent);   

  

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章