Intent的FLAG_ACTIVITY_CLEAR_TOP和FLAG_ACTIVITY_RE...

Activity的两种启动模式:FLAG_ACTIVITY_CLEAR_TOP和FLAG_ACTIVITY_REORDER_TO_FRONT javascript

 

1. 若是已经启动了四个Activity:A,B,C和D。在D Activity里,咱们要跳到B Activity,同时但愿C finish掉,能够在startActivity(intent)里的intent里添加flags标记,以下所示: java

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。 app

  若是不想从新再建立一个新的B Activity,则在上面的代码里再加上: this

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

 


 这样B Activity就会再建立一个新的了,而是会重用以前的B Activity,同时调用B Activity的onNewIntent()方法。 spa

 


2. 若是已经启动了四个Activity:A,B,C和D,在D Activity里,想再启动一个Actvity B,但不变成A,B,C,D,B,而是但愿是A,C,D,B,则能够像下面写代码: blog

Java代码    收藏代码
  1. Intent intent = new Intent(this, MainActivity.class);  
  2. intent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);   
  3. startActivity(intent);   
相关文章
相关标签/搜索