国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

Android如何安全退出多個Activity

移動開發 Android
在做Android App的時候,幾乎每個App都有一個“退出應用”的功能,如何做到完全退出一個App呢?Google了一些文章,都是都是通過List緩存Activity,在需要退出app的時候,迭代activity列表并調用finish方法,這種方案可以達到完全退出App的功能,但是潛在的問題很大,由于Activity被緩存導致不能被釋放,容易導致OOM,因此這種方式需要慎用。

在做Android App的時候,幾乎每個App都有一個“退出應用”的功能,如何做到完全退出一個App呢?Google了一些文章,都是都是通過List緩存Activity,在需要退出app的時候,迭代activity列表并調用finish方法,這種方案可以達到完全退出App的功能,但是潛在的問題很大,由于Activity被緩存導致不能被釋放,容易導致OOM,因此這種方式需要慎用。

下面介紹一種解決方案,利用Activity啟動時的flag屬性來解決此問題,其性能優于通過緩存Activity來完全退出App的方案,只是這種解決方案需要滿足一些條件(見分析過程)。

實現步驟:

1:創建一個“空”的輔助Activity,在其onCreate方法中調用finish方法。如下:

 

  1. public class LastActivity extends Activity { 
  2.  
  3. @Override 
  4. protected void onCreate(Bundle savedInstanceState) { 
  5. super.onCreate(savedInstanceState); 
  6. finish(); 

 

2:點擊“退出App”的按鈕執行以下方法:

 

  1. findViewById(R.id.quit).setOnClickListener(new OnClickListener() { 
  2.  
  3. @Override 
  4. public void onClick(View v) { 
  5. Intent intent = new Intent(SecondActivity.this,LastActivity.class); 
  6. intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK); 
  7. intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
  8. SecondActivity.this.startActivity(intent); 
  9. finish(); 
  10. }); 

通過這兩個步驟可以實現退出整個應用。下面做一個簡單地分析:

測試中使用三個Activity,其執行順序為MainActivity -> SecondActivity -> LastActivity,在SecondActivity中,我們期望點擊“退出app”按鈕來實現完全退出App的功能,此時我們將借助一個輔助Activity(LastActivity)。

首先在觸發點擊事件后,在onClick方法中執行啟動LastActivity操作。在執行點擊事件前我們先查看任務棧中運行著的Activity,可以通過如下的命令查看:

adb shell dumpsys activity

其結果如下:
此時我們可以知道MainActivity跟SecondActivity屬于同一個任務棧,且啟動順序為MainActivity -> SecondActivity。在onClick方法中我們準備啟動LastActivity的時候,其Flag被設置為Intent.FLAG_ACTIVITY_CLEAR_TASK,該flag在android 文檔中的表述為“If set in an Intent passed to Context.startActivity(), this flag will cause any existing task that would be associated with the activity to be cleared before the activity is started.”,其表達的意思為在啟動新的Activity的時候,將清理跟此Activity“相關”的任務棧,此時除了棧中本身的Activity(SecondActivity)都將被清理,然后再啟動Activity(LastActivity)。下面來驗證其是否正確,在LastActivity的onCreate調用finish前加上斷點,然后點擊“退出App”按鈕,查看任務棧的信息如下:
此時我們可以看出,在LastActivity被啟動后,MainActivity被清理了,此時任務棧中只剩下LastActivity跟SecondActivity。接著運行LastActivity的finish方法,LastActivity退出,然后SecondActivty也退出,此時就退出App了。

上面的方式是所有的Activity都存在同一個任務棧中的情況,對于擁有不同任務棧的不同Activity是否也能真正意義上的完全退出App呢?下面我們將在AndroidManifest.xml文件中對SecondActivity跟LastActivity中做如下設置,使其位于不同的任務棧中:

 

  1. <activity 
  2. android:name=".SecondActivity" 
  3. android:launchMode="singleTask" 
  4. android:taskAffinity="com.umeng.social" 
  5. /> 
  6. <activity 
  7. android:name=".LastActivity" 
  8. android:launchMode="singleTask" 
  9. android:taskAffinity="com.umeng.social.test" 
  10. /> 

此時我們查看任務棧的情況,如下:
此時我們可以看見MainActivity跟SecondActivity在不同的任務棧中,此時點擊退出App按鈕后,其Activity棧的情況如下:
可以看到此時三個Activity都在不同的任務棧中。細心的同學可能已經發現問題了,為什么LastActivity已經啟動,而MainActivity還沒有被銷毀?是的,這里就是上面提到的'清理跟此Activity“相關”的任務棧'中“相關”兩字的特殊意義了,這說明在清理Activity時是有條件的,其條件為“被clean的Activity必須跟需要啟動的Activity在同一任務棧中”。由于現在MainActivity、SecondActivity、LastActivity在不同任務棧中,因此Activity不會被清理。執行斷點后續代碼,此時Activity棧中依然存在MainActivity,導致整個App是不能完全退出的。

因此采用設置falg的方式完全退出App是有條件的,條件為:”整個App的Activity存在同一個任務棧中“或者任務棧模型滿足以下條件:
目前對于擁有多個任務棧的情況完全退出App的情況暫時沒有想到比較***的解決方案,如果有小伙伴知道,請記得留言,謝謝。

責任編輯:chenqingxiang 來源: bingobinbin的專欄
相關推薦

2013-02-01 13:47:47

Android開發Activity

2012-02-17 17:07:30

Android安全Activity劫持

2020-08-26 07:47:03

Node腳本鏡像

2013-03-26 11:35:15

設置Activity進

2015-11-09 14:28:06

Adroid安全

2015-11-09 14:37:45

Android安全

2015-11-09 14:17:51

2010-07-13 09:08:27

Widget開發

2015-10-20 15:54:16

android源碼滑動關閉

2013-01-08 13:33:07

Android開發Activity入門指南

2024-04-24 11:09:12

Android圖標

2011-04-12 17:16:52

Activity跳轉開發實例Android學習筆記

2014-08-08 10:36:12

ActivityAndroid

2011-06-02 11:13:10

Android Activity

2010-02-06 10:14:36

Android Act

2011-05-31 09:23:58

Android Activity

2014-05-27 15:36:01

AndroidActivity啟動模式

2010-01-25 17:21:34

Android Act

2014-08-21 11:07:40

AndroidActivity銷毀

2009-04-13 09:46:12

點贊
收藏

51CTO技術棧公眾號

99久久综合| 羞羞小视频视频| 国产网站在线免费观看| 欧美视频中文字幕| 91精品国产高清自在线| 免费在线视频你懂得| 国产一区二区在线看| 麻豆传媒视频在线| 亚洲巨乳在线| 国产一区二区三区色淫影院 | 黄色精品一区二区| 一区二区三区在线不卡| 韩国日本美国免费毛片| 豆国产96在线|亚洲| 一本色道久久99精品综合| 亚洲永久免费| 日韩欧美激情一区二区| 久久五月激情| 五月婷婷综合色| 狠狠狠色丁香婷婷综合久久五月| 国产精品初高中精品久久| 亚洲精彩视频| 精品欧美国产| 99国产精品久久久久久久成人热 | 日韩精品欧美激情| 欧美片第一页| 国产亚洲欧美一区| 亚洲天堂av资源在线观看| 久久福利视频网| 日韩激情免费| 日韩欧美一区二区视频在线播放| 91在线你懂得| 99视频在线观看地址| 中文字幕在线观看日韩| 国内精品久久久久久久影视简单 | 中文字幕的久久| 美女福利视频在线| 国产精品区一区二区三| 精品美女久久久| av片在线看| 欧美国产日韩在线观看| 国产中文字幕在线视频| 亚洲欧美日韩在线一区| 国内精品久久久久久久影视简单| 亚洲三级一区| 国产片侵犯亲女视频播放| 欧美色偷偷大香| 最新亚洲国产| 男女视频一区二区| 亚洲国产精品字幕| 亚洲精品影视| 一区二区三区欧美激情| 牛牛精品视频在线| 欧美裸身视频免费观看| 欧美成人伊人久久综合网| 久久中文字幕在线| 校园春色影音先锋| 国产在线不卡一区二区三区| 国产va免费精品高清在线观看| 亚洲黄在线观看| 欧美91在线| 成人免费在线观看入口| 中文字幕在线中文字幕二区| 亚洲国产成人精品久久| 色综合五月天| 轻点好疼好大好爽视频| 在线免费观看日本一区| 精品av导航| 黄色一级大片免费| 欧美日韩dvd在线观看| 久久不见久久见国语| 91国在线高清视频| 欧美一卡二卡三卡| 最新国产精品久久久| 男男视频在线观看网站| 中文字幕精品www乱入免费视频| 亚洲欧美日本国产专区一区| 中文字幕国产在线| 欧美高清自拍一区| 成人看片黄a免费看在线| 秋霞午夜在线观看| 成人在线精品视频| 亚洲午夜视频在线观看| 懂色av一区二区| 欧美激情国产精品日韩| 最近日韩中文字幕中文| 精品伊人久久久久7777人| 中文在线免费| 国产精品一区二区欧美| 亚洲不卡在线观看| 欧洲激情综合| wwwav91| 久久伊人91精品综合网站| 经典一区二区三区| 国产美女情趣调教h一区二区| 久久久久久久免费| 欧美日韩一本到| 国产综合精品一区| wwwwww欧美| 欧美片一区二区三区| 日本欧美一区二区三区| av小片在线| 国产日韩精品在线| 一区二区三区在线免费视频| 二区三区不卡| 在线观看欧美激情| 精品国产91亚洲一区二区三区婷婷| 亚洲欧美高清| 综合久久国产| 成人h猎奇视频网站| 国产亚洲欧美一级| 亚洲日本免费电影| 欧美在线观看www| 在线观看日韩av| 99国产精品视频免费观看| 日本另类视频| 波多野结衣乳巨码无在线| 中文字幕在线观看日韩| av亚洲精华国产精华精| 精品视频国内| 成年人羞羞的网站| 国产欧美日韩高清| 欧美视频在线观看一区二区| 亚洲尤物影院| 暖暖在线中文免费日本| 黄色一级视频播放| 久久97精品久久久久久久不卡 | 欧美激情综合色| 中文字幕的久久| 精品久久网站| 免费大片黄在线观看视频网站| 久久99国产精品| 日韩av最新在线观看| 久久综合狠狠综合久久激情 | 日本欧美黄网站| 在线观看视频一区| 久久99国产乱子伦精品免费| 99精品女人在线观看免费视频| 啊啊啊啊啊啊啊视频在线播放| 999在线免费观看视频| 日韩毛片在线观看| 国产精品国产自产拍高清av | 日韩视频免费直播| 成人av电影免费观看| 狠狠色丁香婷婷综合影院| а√中文在线8| 欧美日韩怡红院| 成人网在线视频| 亚洲欧洲国产精品| 一区二区三区久久久| 亚洲欧美视频一区二区三区| 久久xxx视频| 亚洲精品视频区| 日韩视频一二三| 国产精品久久91| 亚洲精品动漫久久久久| 中文字幕二三区不卡| 亚洲黄页一区| 视频一区中文字幕精品| shkd中文字幕久久在线观看| 免费无码毛片一区二三区| 95av在线视频| 久久天天躁狠狠躁老女人| 91福利精品视频| 99国产成+人+综合+亚洲欧美| av在线播放不卡| 在线观看特色大片免费视频| 国产九九热视频| 日韩电影在线播放| 2018国产精品视频| 日韩欧美成人午夜| 一区二区三区国产精品| 国产中文字幕一区| 欧美福利在线| 国产一区在线电影| 日韩欧美一中文字暮专区| 在线看三级网站视频| 国内精品视频一区二区三区| 成人91视频| 97在线视频一区| 亚洲另类激情图| 91成人免费电影| 国产精品久久久久久久久晋中| 色欧美自拍视频| 欧美视频一区二区| 国内久久精品视频| 91tv官网精品成人亚洲| 91九色综合| 成人免费高清观看| 日本一区高清| 成人三级av| 无罩大乳的熟妇正在播放| 精品亚洲一区二区三区四区五区高| 欧美亚洲伦理www| 久久久久www| 亚洲丝袜在线视频| 精品国产麻豆免费人成网站| 中文字幕永久在线不卡| 日韩精品1区| 国产成人免费9x9x人网站视频|