真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Android中怎么關(guān)閉多個(gè)Activity

Android中怎么關(guān)閉多個(gè)Activity,針對這個(gè)問題,這篇文章詳細(xì)介紹了相對應(yīng)的分析和解答,希望可以幫助更多想解決這個(gè)問題的小伙伴找到更簡單易行的方法。

創(chuàng)新互聯(lián)建站長期為成百上千家客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對不同對象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺,與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為臨澧企業(yè)提供專業(yè)的成都做網(wǎng)站、成都網(wǎng)站制作、成都外貿(mào)網(wǎng)站建設(shè),臨澧網(wǎng)站改版等技術(shù)服務(wù)。擁有10余年豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開發(fā)。

1、使用Application來進(jìn)行關(guān)閉

public class App extends Application { 

  private static List lists = new ArrayList<>(); 

  public static void addActivity(Activity activity) { 
    lists.add(activity); 
  } 

  public static void clearActivity() { 
    if (lists != null) { 
      for (Activity activity : lists) { 
        activity.finish(); 
      } 

      lists.clear(); 
    } 
  } 
} 

//然后寫一個(gè)基類Activity,在構(gòu)造構(gòu)造方法調(diào)用App.addActivity(this);就可以實(shí)現(xiàn)。

2、使用廣播的方式來進(jìn)行關(guān)閉

在基類構(gòu)造方法中實(shí)現(xiàn)注冊廣播,onDestroy方法取消注冊

public class BaseActivity extends AppCompatActivity { 

  @Override 
  protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

    IntentFilter intentFilter = new IntentFilter(); 
    intentFilter.addAction(getString(R.string.promotion_action)); 
    registerReceiver(receiver, intentFilter); 
  } 

  BroadcastReceiver receiver = new BroadcastReceiver() { 
    @Override 
    public void onReceive(Context context, Intent intent) { 
      finish(); 
    } 
  }; 

  @Override 
  protected void onDestroy() { 
    super.onDestroy(); 
    unregisterReceiver(receiver); 
  } 
}

接下來只需要你在想要關(guān)閉所有Activity的界面調(diào)用

//銷毀所有的Activity 
//關(guān)閉本窗口
getActivity().finish();

//關(guān)閉父窗口
if(getActivity().getParent()!= null){
  getActivity().getParent().finish();
}

//關(guān)閉列表頁面
Intent intent = new Intent();
intent.setAction(getString(R.string.promotion_action));
getActivity().sendBroadcast(intent);

3、使用onActivityResult遞歸回調(diào)的方式關(guān)閉

1)在基類Activity重寫onActivityResult方法通過識別ResultCode來調(diào)用finish方法

2)接下來只需要在你想要關(guān)閉Activity調(diào)用setResult(Result_CLOSE)就可以了

public class BaseActivity extends AppCompatActivity { 
  protected final static int RESULT_CLOSE = 0; 
  @Override 
  protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
  } 

  @Override 
  protected void onActivityResult(int requestCode, int resultCode, Intent data) { 
    super.onActivityResult(requestCode, resultCode, data); 
    if(resultCode == RESULT_CLOSE){ 
      setResult(RESULT_CLOSE); 
      finish(); 
    } 
  } 
}

4.使用setFalgs的方式來關(guān)閉

首先先來介紹一個(gè)LaunchMode四種模式:

LaunchMode

1)standard和singleTop是相同的,每次都會創(chuàng)建一個(gè)新的Activity實(shí)例,區(qū)別是singleTop當(dāng)壓入棧的Activity與任務(wù)棧的棧頂Activit相同則不會創(chuàng)建實(shí)例(會調(diào)用onNewIntent方法)

2)singleInstance和singleTask是相同的,都會保證任務(wù)中沒有相同的任務(wù),(當(dāng)執(zhí)行的Activity與任務(wù)中某個(gè)Activity相同則會調(diào)用onNewIntent方法),不同點(diǎn)是(singleInstance每次都會創(chuàng)建一個(gè)任務(wù)棧并將Activity壓入棧中),(singleTask是在一個(gè)任務(wù)棧中,如果壓入棧的Activity與棧內(nèi)Activity某個(gè)相同則直接將那個(gè)Activity移動到棧頂不會創(chuàng)建新的實(shí)例)

當(dāng)然這里并沒有用到這四種模式而是運(yùn)用的是Intent.FLAG_ACTIVITY_CLEAR_TOP,這種標(biāo)示基本和singleTop類似不同的是如果壓入棧的Activity在棧內(nèi)某個(gè)Activity相同則將它上面的所有Activity進(jìn)行出棧操作。

在每次跳轉(zhuǎn)都加上

intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);

所以在最后一個(gè)Activity后退應(yīng)用:

@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) { 
  if (keyCode == KeyEvent.KEYCODE_BACK) { 
    //銷毀所有的Activity 
    Intent intent = new Intent(this,FirstActivity.class); 
    intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
    startActivity(intent); 
  } 
  return super.onKeyDown(keyCode, event); 
}

這樣略先復(fù)雜,現(xiàn)在來說一下使用flag的另一種方法:

在退出的Activity的前一個(gè)Activity跳轉(zhuǎn)加上

intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_TASK_ON_HOME);

就可以了,現(xiàn)在來說一下這幾個(gè)什么意思

/* 
  FLAG_ACTIVITY_CLEAR_TASK 這個(gè)標(biāo)示將在這個(gè)活動開始之前清除該棧中所有的任務(wù),將里面的Activity都finish掉 
  FLAG_ACTIVITY_TASK_ON_HOME 這個(gè)flag將造成新任務(wù)在home的上面,就是在啟動的Activity點(diǎn)擊back之后就會回到home界面 
 */

關(guān)于Android中怎么關(guān)閉多個(gè)Activity問題的解答就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道了解更多相關(guān)知識。


分享標(biāo)題:Android中怎么關(guān)閉多個(gè)Activity
分享鏈接:http://weahome.cn/article/poipoe.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部