精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

Android退出應用最優雅的方式

移動開發 Android
本文介紹六種Android退出應用的方法:容器式、廣播式、進程式、RS優雅式、SingleTask改版式和懶人式,詳細內容看下文。

[[185951]]

我們先來看看幾種常見的退出方法(不優雅的方式)

一、容器式

建立一個全局容器,把所有的Activity存儲起來,退出時循環遍歷finish所有Activity

  1. import java.util.ArrayList; 
  2. import java.util.List; 
  3. import android.app.Activity; 
  4. import android.os.Bundle; 
  5. public class BaseActivity extends Activity { 
  6. @Override 
  7. protected void onCreate(Bundle savedInstanceState) { 
  8. super.onCreate(savedInstanceState); 
  9. // 添加Activity到堆棧 
  10. AtyContainer.getInstance().addActivity(this); 
  11. @Override 
  12. protected void onDestroy() { 
  13. super.onDestroy(); 
  14. // 結束Activity&從棧中移除該Activity 
  15. AtyContainer.getInstance().removeActivity(this); 
  16. class AtyContainer { 
  17. private AtyContainer() { 
  18. private static AtyContainer instance = new AtyContainer(); 
  19. private static List activityStack = new ArrayList(); 
  20. public static AtyContainer getInstance() { 
  21. return instance; 
  22. public void addActivity(Activity aty) { 
  23. activityStack.add(aty); 
  24. public void removeActivity(Activity aty) { 
  25. activityStack.remove(aty); 
  26. /** 
  27. * 結束所有Activity 
  28. */ 
  29. public void finishAllActivity() { 
  30. for (int i = 0, size = activityStack.size(); i if (null != activityStack.get(i)) { 
  31. activityStack.get(i).finish(); 
  32. activityStack.clear(); 
  33.  

這種方法比較簡單, 但是可以看到activityStack持有這Activity的強引用,也就是說當某個Activity異常退出時,activityStack沒有即使釋放掉引用,就會導致內存問題,接下來我們看一種類似的方式,但是會稍微優雅一點點

二、廣播式

通過在BaseActivity中注冊一個廣播,當退出時發送一個廣播,finish退出

  1. public class BaseActivity extends Activity { 
  2. private static final String EXITACTION = "action.exit"
  3. private ExitReceiver exitReceiver = new ExitReceiver(); 
  4. @Override 
  5. protected void onCreate(Bundle savedInstanceState) { 
  6. super.onCreate(savedInstanceState); 
  7. IntentFilter filter = new IntentFilter(); 
  8. filter.addAction(EXITACTION); 
  9. registerReceiver(exitReceiver, filter); 
  10. @Override 
  11. protected void onDestroy() { 
  12. super.onDestroy(); 
  13. unregisterReceiver(exitReceiver); 
  14. class ExitReceiver extends BroadcastReceiver { 
  15. @Override 
  16. public void onReceive(Context context, Intent intent) { 
  17. BaseActivity.this.finish(); 
  18.  

三、進程式

通過直接殺死當前應用的進程來結束應用,簡單粗暴,而且有(wu)效!

  1. android.os.Process.killProcess(android.os.Process.myPid()); 
  2. System.exit(0); 
  3. ActivityManager manager = (ActivityManager) getSystemService(ACTIVITY_SERVICE); 
  4. manager.killBackgroundProcesses(getPackageName());  

這三種都能達到同樣的效果,但是在模擬器上都會彈出 Unfortunately , XXX has stopped 消息提示框,但確實能退出應用。部分真機直接失效,只能finish當前Activity(比如我手上這臺小米note,國產的幾款ROM fw層改動太多,使用這種方式需慎重)

四、 RS優雅式

什么是RS式呢?即Receiver+singleTask 。我們知道Activity有四種加載模式,而singleTask就是其中的一種,使用這個模式之后,當startActivity時,它先會在當前棧中查詢是否存在Activity的實例,如果存在,則將其至于棧頂,并將其之上的所有Activity移除棧。我們打開一個app,首先是一個splash頁面,然后會finish掉splash頁面。跳轉到主頁。然后會在主頁進行N次的跳轉,期間會產生數量不定的Activity,有的被銷毀,有的駐留在棧中,但是棧底永遠是我們的HomeActivity。這樣就讓問題變得簡單很多了。我們只需兩步操作即可優雅的實現app的退出。

1、在HomeActivity注冊一個退出廣播,和第二個廣播式一樣,但是這里只需要在HomeActivity一個頁面注冊即可。

2、設置HomeActivity的啟動模式為singleTask。

當我們需要退出的時候只需要startActivity(this,HomeActivity,class), 再發送一個退出廣播。上面代碼首先會把棧中HomeActivity之上的所有Activity移除出棧,然后接到廣播finish自己。一切OK ! 沒有彈框,不用考慮機型Rom適配。不會有內存問題,就是那么的優雅,簡單!

五、SingleTask改版式

和一些小伙交流之后,很多小伙伴說注冊廣播略顯麻煩,在樓下的小伙伴提出了一種更簡單的方式,思路也很簡單,

1、設置MainActivity的加載模式為singleTask

2、重寫MainActivity中的onNewIntent方法

3、需要退出時在Intent中添加退出的tag

由于很多小伙伴對源碼需求比較熱切,我們這里就直接以代碼的形式為大家講解這種方式

第一步設置MainActivity的加載模式為singleTask

  1. android:launchMode="singleTask" 

第二步重寫onNewIntent()方法

  1. private static final String TAG_EXIT = "exit"
  2. @Override 
  3. protected void onNewIntent(Intent intent) { 
  4. super.onNewIntent(intent); 
  5. if (intent != null) { 
  6. boolean isExit = intent.getBooleanExtra(TAG_EXIT, false); 
  7. if (isExit) { 
  8. this.finish(); 
  9.  

第三步 退出

  1. Intent intent = new Intent(this,MainActivity.class); 
  2. intent.putExtra(MainActivity.TAG_EXIT, true); 
  3. startActivity(intent);  

六、懶人式

這種方式更加簡單,只需要如下兩步操作

1、將MainActivity設置為singleTask

2、將退出出口放置在MainActivity

我們可以看到很多應用都是雙擊兩次home鍵退出應用,就是基于這樣的方式來實現的,這里在貼一下如何處理連續兩次點擊退出的源碼private boolean mIsExit; 

  1. @Override 
  2. /** 
  3. * 雙擊返回鍵退出 
  4. */ 
  5. public boolean onKeyDown(int keyCode, KeyEvent event) { 
  6. if (keyCode == KeyEvent.KEYCODE_BACK) { 
  7. if (mIsExit) { 
  8. this.finish(); 
  9. else { 
  10. Toast.makeText(this, "再按一次退出", Toast.LENGTH_SHORT).show(); 
  11. mIsExit = true
  12. new Handler().postDelayed(new Runnable() { 
  13. @Override 
  14. public void run() { 
  15. mIsExit = false
  16. }, 2000); 
  17. return true
  18. return super.onKeyDown(keyCode, event); 
責任編輯:龐桂玉 來源: 安卓開發精選
相關推薦

2021-12-27 09:50:03

JavaScript開發數據分組

2021-07-15 09:47:20

Docker容器命令

2021-10-26 10:28:41

開發架構Kubernetes

2022-07-31 19:57:26

react項目VSCode

2017-05-22 11:09:53

KotlinAndroid

2025-09-08 01:00:00

2013-08-09 14:23:09

Android應用Android退出按鈕Android開發設計

2023-09-12 11:47:25

Map容器

2012-02-29 13:39:18

AndroidGoogle

2024-02-07 01:47:47

atexit模塊程序

2020-03-25 17:55:30

SpringBoot攔截器Java

2024-09-20 08:14:16

2010-01-25 13:29:53

Android本地應用

2020-11-06 08:13:03

服務器Nodejs客戶端

2010-01-27 18:19:13

Android畫圖

2010-01-25 16:52:22

Android Int

2010-01-26 10:52:01

Android繪圖

2015-03-30 18:22:38

開發環境API構建

2022-06-02 10:02:47

Kubectl更新應用Linux

2010-01-27 14:24:28

Android界面互調
點贊
收藏

51CTO技術棧公眾號

久久亚洲一区| 色婷婷精品视频| 亚洲色图另类专区| 国产精品日韩欧美一区二区三区| 久久久一二三区| 日本亚洲不卡| 欧美日韩一二三区| 久久av高潮av| 久久精品蜜桃| 激情欧美一区二区三区在线观看| 久久久久久香蕉网| 日本一区二区视频在线播放| 久久久久九九精品影院| 欧美性生交xxxxx久久久| 一级特黄录像免费播放全99| 丰满人妻一区二区三区免费视频| 天堂一区二区在线| 欧美成人中文字幕| 国产精品20p| 国产精品美女在线观看直播| 欧美在线看片a免费观看| 少妇久久久久久被弄到高潮| 成人全视频高清免费观看| 国产精品18久久久久| 国产精品扒开腿做爽爽爽男男| 欧美日韩国产精品综合| 日韩精品91| 日韩电影在线观看中文字幕| 成人黄色一级大片| 蜜桃视频在线观看免费视频| 亚洲免费观看高清| 日韩成人在线资源| 清纯唯美亚洲色图| 不卡一卡二卡三乱码免费网站| 91精品久久久久久久久青青| 日韩 国产 欧美| 亚洲视频免费| 欧美人与物videos| 国产小视频你懂的| 国产中文精品久高清在线不| 亚洲成人教育av| 少妇性l交大片7724com| 婷婷成人av| 欧美日韩亚洲高清一区二区| 欧美日韩亚洲一| 国产后进白嫩翘臀在线观看视频| 最新热久久免费视频| 日本一区视频在线观看免费| 天堂а在线中文在线无限看推荐| 国产寡妇亲子伦一区二区| 91精品久久久久| 国产精品51麻豆cm传媒| 久久婷婷激情| 欧洲成人免费视频| 91丝袜一区二区三区| 99国产精品久久久久久久 | 色爱综合区网| 亚洲色图欧美偷拍| 亚洲黄色网址在线观看| 欧美边添边摸边做边爱免费| 国产精品全国免费观看高清| 日韩色妇久久av| 91精品专区| 国产精品成人一区二区艾草 | 99精品免费| 97色在线视频观看| 国产成人无码一区二区三区在线 | 最新不卡av在线| 在线免费观看一区二区三区| 欧美精品hd| 亚洲视频一区二区在线观看| 777久久精品一区二区三区无码| av在线导航| 亚洲影院理伦片| 男人的天堂狠狠干| 自由日本语热亚洲人| 色8久久精品久久久久久蜜| 九热视频在线观看| 国产免费区一区二区三视频免费 | 欧美日韩在线视频首页| 国产真实乱子伦| 国产成人精选| 91精品国产福利| 蜜臀视频在线观看| 国产欧美日韩一区二区三区四区| 在线电影中文日韩| 永久看片925tv| 亚洲精品极品| 国产精品av电影| 国产绿帽刺激高潮对白| a级精品国产片在线观看| 免费中文日韩| 免费av网站在线观看| 亚洲国产综合色| 日本一极黄色片| 久久伊人久久| 亚洲免费福利视频| 少妇高潮一区二区三区喷水| 韩国自拍一区| 国产乱肥老妇国产一区二| 亚洲高清视频网站| 久久精品视频在线看| 日本中文字幕一级片| 丝袜老师在线| 91麻豆精品国产91久久久久| 久久久亚洲av波多野结衣| 97久久视频| 97国产suv精品一区二区62| 中文字幕日韩经典| 波多野结衣91| 艳母动漫在线免费观看| 东京一区二区| 日韩欧美成人激情| 男人天堂资源网| 亚洲欧美bt| av资源站久久亚洲| 日韩三级影院| 狠狠躁夜夜躁人人躁婷婷91| 三级黄色片播放| 国内精品视频在线观看| 久久久久久久一区二区三区| 91高潮大合集爽到抽搐| 久久人人爽人人爽| 91丨porny丨探花| 成人污污视频| 一区二区三区天堂av| 五月天婷婷综合网| 国产成人午夜高潮毛片| 一区二区三区电影| 日韩三区免费| 亚洲免费一在线| 国产精品变态另类虐交| 国产在线不卡一区| 亚洲精品中字| 国产综合av| 国产视频在线观看一区二区| 久久免费播放视频| 国产精品18久久久久久久久| 制服诱惑一区| 男人天堂久久| 色系列之999| 日本精品入口免费视频| 91论坛在线播放| av黄色在线网站| 欧美男男freegayvideosroom| 久久99亚洲热视| a毛片在线免费观看| 亚洲欧洲www| www.久久av.com| 色无极亚洲影院| 国产精品中文字幕在线| p色视频免费在线观看| 欧美在线观看视频一区二区三区| 一级片视频免费看| 蜜桃av一区二区三区电影| 视频一区二区三区在线观看| 91看片一区| 中文字幕欧美精品在线| 中文字幕日产av| 亚洲欧美另类小说| 精品人妻一区二区乱码| 精品福利av| 欧美激情专区| 成人国产精品| 久久精彩免费视频| 午夜老司机福利| 亚洲成a人v欧美综合天堂下载| 免费看毛片的网站| 翔田千里一区二区| 五月天久久综合网| 99视频这里有精品| 欧美激情图片区| 日韩三级电影网| 欧美午夜在线一二页| 婷婷社区五月天| 国产激情一区二区三区四区 | 天堂а√在线中文在线鲁大师| 国产一区二区三区四区五区入口| 999一区二区三区| 同性恋视频一区| 国产精品一二区| 午夜羞羞小视频在线观看| 亚洲国产一区自拍| 青青艹在线观看| 亚洲激情图片qvod| 欧美一区二区三区成人精品| 日本伊人精品一区二区三区观看方式| 色综合久久av| 日本免费精品| 日韩av黄色在线观看| 麻豆免费在线视频| 日韩成人xxxx| 亚洲专区第一页| 午夜精品在线看| 娇小11一12╳yⅹ╳毛片| 成人av电影在线| 制服丝袜综合网| 黑丝一区二区三区| 亚洲高清乱码| 激情av综合| 成人淫片在线看| 久久电影tv| 精品自在线视频| 国产精品一区二区婷婷| 亚洲大胆人体在线| 国产一区二区三区视频免费观看| 午夜视频在线观看一区二区| 成人黄色短视频| 91热门视频在线观看| 久久久久久久久久毛片| 久久看片网站| 久久久久久人妻一区二区三区| 日韩精品欧美激情一区二区| 久草热久草热线频97精品| 久久丁香四色| 国产精品一区二区三区在线播放| 天堂资源在线| 欧美激情视频一区| 激情成人四房播| 亚洲人成电影在线播放| 欧美 日韩 国产 成人 在线 91| 欧美日本精品一区二区三区| 草莓视频18免费观看| 亚洲高清在线视频| 高h视频免费观看| 国产精品久久久一本精品| 李宗瑞91在线正在播放| 成人av片在线观看| 伊人久久久久久久久| 韩国午夜理伦三级不卡影院| 538在线视频观看| 亚洲欧美日韩国产一区| 狠狠干 狠狠操| 国内在线观看一区二区三区| 日韩精品一区二区三区电影| 久久大综合网| 先锋影音欧美| 北条麻妃国产九九九精品小说| 久久66热这里只有精品| 日本午夜精品久久久| 国产日韩欧美一区二区三区四区| 欧美国产亚洲精品| 91精品国产一区二区三区动漫| 欧美黄页免费| 成人看片人aa| 国产精品视频一区二区三区综合| 国产一区玩具在线观看| 台湾天天综合人成在线| 91美女福利视频高清| 国产午夜亚洲精品一级在线| 91在线视频导航| av日韩一区| 亚洲综合自拍一区| 日韩高清在线观看一区二区| 成人黄动漫网站免费| caoporn成人免费视频在线| 国产一区二区自拍| 私拍精品福利视频在线一区| 欧美日韩大片一区二区三区| 在线日韩一区| 色99中文字幕| 99九九热只有国产精品| av久久久久久| 一区二区日本视频| 日韩亚洲在线视频| 久久国产精品一区二区| 日韩av影视大全| 成人高清av在线| 国产熟妇久久777777| 国产免费成人在线视频| 国产又粗又硬又长又爽| 一区二区三区四区五区视频在线观看| 国产在线欧美在线| 欧美性色19p| 艳妇乳肉豪妇荡乳av| 日韩精品专区在线| 日韩在线免费看| 丝袜美腿精品国产二区| 欧美人与性动交α欧美精品济南到| 久久久欧美精品| 日韩精品专区| 亚洲一区二区三区sesese| 国产精品网在线观看| 日本高清不卡三区| 伊人久久大香线| 波多野结衣之无限发射| 美女免费视频一区| 免费在线观看日韩av| 国产日韩av一区| 九九热精品在线观看| 色综合中文综合网| 国产欧美日韩综合精品一区二区三区| 精品国产91久久久久久久妲己| 国产最新视频在线| 色中色综合影院手机版在线观看| 中文字幕一区久| 91久久精品一区二区别| 少妇精品久久久| 国产精品igao激情视频| 美女国产一区| 国产视频精品视频| 国产精品色噜噜| www.日本精品| 欧美一区二区三区在线视频| 青青草视频在线免费观看| 久久成人av网站| 日韩欧美精品电影| 国产女主播一区二区三区| 欧美wwwww| 国产午夜福利视频在线观看| 国产精品综合一区二区三区| 中文字幕国产专区| 亚洲电影一区二区| 国产不卡精品视频| 中文字幕亚洲无线码在线一区| caoprom在线| 亚洲xxx自由成熟| 成人羞羞网站入口| 中国丰满人妻videoshd | aaaaa一级片| 亚洲精品少妇30p| 亚洲专区在线播放| 亚洲欧美综合精品久久成人| www欧美xxxx| 91青青草免费在线看| 97人人精品| 天堂视频免费看| 国产精品丝袜一区| 成人一级免费视频| 亚洲人成绝费网站色www| 日本蜜桃在线观看视频| 国产精品一区视频| 欧美日韩综合| 免费黄视频在线观看| 亚洲日本丝袜连裤袜办公室| 亚洲无码精品在线播放| 国产亚洲综合久久| 影视一区二区三区| 日本精品一区二区三区高清 久久| 一本久久知道综合久久| 2一3sex性hd| 欧美日韩免费区域视频在线观看| 韩国av在线免费观看| 欧美激情极品视频| 永久免费精品视频| 日本免费a视频| 成人午夜大片免费观看| xxxx 国产| 亚洲第一区第一页| 日韩理论视频| 欧美日韩亚洲一区二区三区四区| 亚洲免费综合| 午夜时刻免费入口| 欧美丝袜丝交足nylons图片| www.av在线播放| 成人免费午夜电影| 欧美韩国一区| 亚洲图片欧美另类| 黄色一区二区在线| 黄色视屏网站在线免费观看| 国产精品久久久久久av下载红粉| 成人激情电影在线| 日本精品一区在线| 亚洲自拍另类综合| 丝袜视频国产在线播放| 日本精品性网站在线观看| 日本高清免费电影一区| 亚洲男人天堂av在线| 亚洲一区二区免费视频| 亚洲 精品 综合 精品 自拍| 国产精品成人国产乱一区| 国产精品精品| 秘密基地免费观看完整版中文| 天天色 色综合| www.国产精品.com| 超碰97在线人人| 久久久久网站| 精品国产大片大片大片| 欧美电影免费观看完整版| 亚洲妇女成熟| 尤物国产精品| 99这里都是精品| 中文字幕在线观看视频一区| 欧美国产日韩一区二区三区| 综合国产视频| 性生活一级大片| 欧美午夜性色大片在线观看| 欧美jizzhd欧美| 乱色588欧美| 国产真实精品久久二三区| 日韩久久精品视频| 日韩中文字幕网站| 精品资源在线| 天堂在线一区二区三区| 黄色成人av在线| 黄色一级大片在线免费看产| 久久久久久高清| 国产在线视频不卡二| 超碰超碰超碰超碰| 欧美成人一二三|