精品欧美一区二区三区在线观看 _久久久久国色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技術棧公眾號

你懂的国产视频| 麻豆传媒在线看| 成人免费视频| 精品在线你懂的| 欧美激情久久久久| 午夜理伦三级做爰电影| 亚瑟国产精品| 欧美性xxxx极品hd欧美风情| 亚洲高清视频在线观看| 亚洲成人精品女人久久久| 亚洲在线国产日韩欧美| 日韩视频在线免费观看| zjzjzjzjzj亚洲女人| 日韩电影大全网站| 亚洲综合在线视频| 污视频在线免费观看一区二区三区| 国产成人三级一区二区在线观看一 | 午夜激情久久久| 亚洲成人一区二区三区| 欧美 日韩 国产 精品| 蜜桃久久久久久| 97视频在线观看免费| 久久久久久久久久97| 欧美一级一片| 精品奇米国产一区二区三区| 中文字幕第36页| 国产中文在线播放| 亚洲乱码中文字幕| 亚洲国产精品毛片| 麻豆导航在线观看| av一区二区不卡| 99精品国产高清一区二区| 免费又黄又爽又猛大片午夜| 一区福利视频| 久久久久久久久久av| 黄色香蕉视频在线观看| 精品一区二区三区在线| 日韩av资源在线播放| 中文字幕一二三区| 精品中文在线| 欧美福利视频导航| 日韩av片网站| 久久xxx视频| 一本到不卡免费一区二区| 国产中文字幕视频在线观看| 国产第一页在线| 亚洲制服丝袜在线| 97碰在线视频| 久色国产在线| 亚洲一区二区3| 777久久精品一区二区三区无码| 91网页在线观看| 中文幕一区二区三区久久蜜桃| 欧美日韩在线观看一区| 蜜芽tv福利在线视频| 91在线视频18| 欧美日韩国产免费一区二区三区| 天堂av中文在线资源库| 99精品在线免费| 老牛影视免费一区二区| 激情小视频在线| 国产日韩欧美一区二区三区乱码 | 国产在线视频网站| 久久精品人人做人人综合 | 国产精品视频公开费视频| 波多野结衣啪啪| 久久精品官网| 国产精品丝袜视频| 91超薄丝袜肉丝一区二区| 久久精品国产秦先生| 成人免费在线视频网址| 99久久国产热无码精品免费| 国产精品88av| 精品免费一区二区三区蜜桃| 你懂的在线免费观看| 欧美经典一区二区| 穿情趣内衣被c到高潮视频| 尤物视频在线看| 午夜电影网一区| 国产真实乱子伦| 精品176极品一区| 欧美一区二区人人喊爽| 超碰caoprom| 校花撩起jk露出白色内裤国产精品 | 校园春色 亚洲色图| 国产aa精品| 亚洲国模精品一区| 亚洲精品国产精品国自产网站| 色一区二区三区四区| 欧美精品少妇videofree| 国产一级免费观看| 日本成人中文字幕在线视频| 51国偷自产一区二区三区的来源 | 国产精品免费看久久久无码| 免费h视频在线观看| 欧美在线播放高清精品| 欧美高清精品一区二区| 色狼人综合干| 久久久国产在线视频| 日本三级欧美三级| 秋霞电影一区二区| 国产乱码精品一区二区三区不卡| 蜜桃成人在线视频| 一区二区理论电影在线观看| 久久精品香蕉视频| 伊人www22综合色| 国产亚洲欧洲高清| 国产一级一级片| 久久福利资源站| 精品久久久久久一区| 免费日本一区二区三区视频| 欧美日韩亚洲精品一区二区三区| 亚洲精品永久视频| 啄木系列成人av电影| 久久亚洲影音av资源网| 无码视频在线观看| 成人激情免费电影网址| 中文字幕久精品免| 欧美片第一页| 亚洲高清色综合| 国产在线一卡二卡| 麻豆国产欧美一区二区三区| 九色91视频| 日本精品600av| 欧美男人的天堂一二区| 久久丫精品国产亚洲av不卡| 欧美激情无毛| 91精品久久久久久久久久入口 | 亚洲伊人影院| 中文字幕日韩欧美在线视频| 国产女同在线观看| 成人一级片网址| 免费极品av一视觉盛宴| 精品久久久网| 中文字幕久久久| 一二三区免费视频| 97成人超碰视| 美脚丝袜脚交一区二区| 日本在线成人| 欧美夫妻性生活xx| 国产欧美综合视频| 日韩码欧中文字| jizz欧美激情18| 国产亚洲欧美日韩在线观看一区二区| 久久久综合av| 日韩性xxxx| 精品久久久久久中文字幕| 91超薄肉色丝袜交足高跟凉鞋| 2023国产精品久久久精品双| 国产一区在线播放| 日本中文字幕在线播放| 欧美日韩情趣电影| 亚洲 欧美 国产 另类| 鲁大师影院一区二区三区| 麻豆精品视频| 色婷婷综合久久久中字幕精品久久| 日韩电视剧在线观看免费网站| 亚州国产精品视频| wwwwxxxxx欧美| 男女曰b免费视频| 欧美一区二区三区高清视频| 国产精品日韩一区| 福利在线视频网站| 欧美videossexotv100| 国产在线视频二区| 91丨九色丨蝌蚪丨老版| 国产精品亚洲二区在线观看| 精品国精品国产自在久国产应用 | 日韩在线播放av| 国产精品无码久久av| 一区二区三区四区乱视频| 成人在线电影网站| 亚洲一区二区三区四区五区午夜| 欧美日韩一区综合| 成人黄色理论片| 国模gogo一区二区大胆私拍| 天堂av网在线| 欧美视频你懂的| 天天干中文字幕| 99精品久久久久久| 国产真人无码作爱视频免费| 98精品视频| 国产伦精品一区二区三毛| 欧美xxx网站| 久久这里只有精品视频首页| 欧美视频xxx| 欧美午夜一区二区三区| 午夜精品福利在线视频| www.激情成人| www.超碰97.com| 亚洲国产一区二区三区高清| 日韩av一区二区三区在线| 久久天堂久久| 日本久久久久久久| 超碰在线观看免费| 亚洲欧美国产精品专区久久 | 亚洲www免费| 久久综合五月天| 久香视频在线观看| 日韩美女主播在线视频一区二区三区| 成人毛片18女人毛片| 中文字幕一区二区三区四区不卡 | 久久久国产精品不卡| 丰满爆乳一区二区三区| 国产精品国内免费一区二区三区| 国产日韩一区欧美| 全球中文成人在线| 欧美亚洲视频在线看网址| 黄色在线论坛| 亚洲人成网站色ww在线| 欧美一级在线免费观看| 欧美日韩1区2区| 性色av免费观看| 亚洲成人777| 日本黄色片免费观看| 久久久久国产一区二区三区四区| 久久久久久国产精品日本| 日本中文在线一区| 精品中文字幕av| 亚洲黄色三级| 黄色网在线视频| 国产精品99视频| 色综合久久av| 亚洲免费专区| 精品久久sese| 国产精品x8x8一区二区| 91在线中文字幕| 久久夜夜久久| 国产精品久久久| 欧美gay囗交囗交| 人人澡人人澡人人看欧美| 欧美卡一卡二| 欧美理论电影在线播放| 永久免费av在线| 国产一区二区动漫| 男人av在线| 亚洲精品日韩久久久| 日本黄色免费视频| 亚洲成人中文字幕| 超碰在线人人干| 日韩欧美色综合| 国产肥老妇视频| 日韩午夜av一区| 99久久久国产精品无码网爆| 欧美精品一级二级三级| 亚洲一区 中文字幕| 在线免费观看一区| 波多野结衣毛片| 在线观看日韩国产| 伊人久久亚洲综合| 欧美日韩亚洲不卡| 97精品人妻一区二区三区香蕉| 在线观看网站黄不卡| 日本欧美www| 欧美日本一区二区| 国产三级在线观看视频| 91麻豆精品91久久久久久清纯| 国产一区二区三区视频免费观看| 欧美三级视频在线观看| 一道本在线视频| 欧美一区二区三区思思人| xxxx18国产| 欧美精品一区二区三区很污很色的 | 国产色婷婷在线| 57pao成人国产永久免费| 亚洲欧美韩国| 国产欧美日韩中文字幕在线| 91成人小视频| 国产精品麻豆免费版| 久久亚州av| 日韩高清dvd| 亚洲国产不卡| 分分操这里只有精品| 亚洲欧美日韩一区在线观看| 欧美一级黄色影院| 国产原创一区二区| 亚洲熟女一区二区| 久久精品一级爱片| 少妇人妻丰满做爰xxx| 洋洋成人永久网站入口| 在线能看的av| 欧美日韩的一区二区| 丰满人妻一区二区三区无码av| 精品亚洲aⅴ在线观看| 色的视频在线免费看| 欧美片一区二区三区| 中文字幕在线直播| 91久久精品美女高潮| 国产精品极品| 亚洲国产精品久久久久婷婷老年 | 国产精品久久免费看| 麻豆一区产品精品蜜桃的特点| 欧美日韩激情小视频| 亚洲一区二区影视| 亚洲国产精彩中文乱码av在线播放| 免费人成在线观看网站| 久久精品99久久久久久久久| 欧美久久天堂| 91免费视频国产| 偷拍精品福利视频导航| 日本xxx免费| 日韩av在线发布| 无码国产69精品久久久久网站 | 欧美日韩亚洲一区二区三区在线观看| 五月精品视频| 欧美日韩大尺度| 丁香婷婷综合激情五月色| 日本欧美一区二区三区不卡视频| 亚洲综合免费观看高清在线观看 | 日韩午夜av电影| youjizz在线播放| 欧美精品第一页在线播放| 欧美精品高清| 国产精品视频免费一区| 欧美成人激情| 日韩久久一级片| 成人午夜免费电影| 国产三级国产精品国产国在线观看| 欧美天堂在线观看| 亚洲福利在线观看视频| 久久精品99久久久香蕉| 日韩一区二区三区在线免费观看| 国产美女在线精品免费观看| 91成人精品视频| 狠狠躁狠狠躁视频专区| 久久综合色婷婷| 国产精品99精品| 欧美一区二区三区精品| 三区四区电影在线观看| 国产精品99久久久久久白浆小说| 欧美成人午夜77777| a级黄色片免费| 久草在线在线精品观看| 极品蜜桃臀肥臀-x88av| 日韩欧美国产免费播放| 天天干视频在线| 久久免费在线观看| 北条麻妃一区二区三区在线| 看全色黄大色大片| 国内精品久久久久影院一蜜桃| 国产精品18在线| 欧美三区在线观看| 色多多视频在线观看| 国产日本欧美一区二区三区| 成人影视亚洲图片在线| www.99在线| 国产精品天干天干在观线| 中文字幕日韩三级| 日韩网站免费观看高清| 日韩欧美专区| 国产一区一区三区| 国产中文字幕一区| 欧美日韩中文字幕在线观看| 91精品国产综合久久久久久久久久 | 波多野结衣久久精品| 九九九九九精品| 视频一区欧美精品| 国产伦精品一区二区三区视频女| 欧美最新大片在线看| 香蕉视频免费在线播放| 91精品一区二区| 欧美女激情福利| 荫蒂被男人添免费视频| 日韩欧亚中文在线| 成人在线免费公开观看视频| 国产精品最新在线观看| 亚洲字幕久久| 亚洲一级av无码毛片精品| 日韩欧美主播在线| 男女啪啪在线观看| 99电影在线观看| 国产精品普通话对白| 最新中文字幕av| 91精品国产色综合久久不卡电影| 日本三级在线观看网站| 六月婷婷久久| 麻豆免费精品视频| 久久久精品91| 亚洲欧美日韩区| 91成人小视频| 欧美久久久久久久久久久久久| 久久一区二区三区四区| 亚洲网站在线免费观看| 欧美国产在线电影| 国产乱码精品一区二区三区四区| 特黄视频免费观看| 亚洲国产一区二区视频| 美国一级片在线免费观看视频| 国产视频999| 国产精品老牛| 欧美一级片在线视频| 亚洲成人性视频| 伊人久久大香伊蕉在人线观看热v 伊人久久大香线蕉综合影院首页 伊人久久大香 | 92久久精品一区二区| 国产一区二区福利视频| 中国一级片在线观看| 亚洲精品xxx| 亚洲精品tv| 黄色动漫网站入口| 自拍偷拍亚洲综合|