亚洲免费在线-亚洲免费在线播放-亚洲免费在线观看-亚洲免费在线观看视频-亚洲免费在线看-亚洲免费在线视频

Android應(yīng)用開(kāi)發(fā)完全退出程序的通用方法

系統(tǒng) 2149 0

?

?

Android應(yīng)用開(kāi)發(fā)完全退出程序的通用方法!!!

分類(lèi):? Android基礎(chǔ)教程 ? 18356人閱讀 ? 評(píng)論 (60) ? 收藏 ? 舉報(bào)

大家好,好久不見(jiàn)了,我們?cè)陂_(kāi)發(fā)一個(gè)android應(yīng)用時(shí),有可能有N個(gè)Activity,而在每個(gè)Activity里的菜單里有個(gè)"退出程序"菜單,這里就要完全退出程序了,所以今天給大家分享的是Android應(yīng)用開(kāi)發(fā)完全退出程序的通用方法,以前我在網(wǎng)上收了幾種方法,但都不能通用,比如:任務(wù)管理器方法(ActivityManager):

首先要說(shuō)明該方法運(yùn)行在Android 1.5 - 2.1 才可以(不過(guò)蠻好用的撒!),2.2以后就不行了,同時(shí)需要加如下權(quán)限:

?

  1. <uses-permission?android:name= "android.permission.RESTART_PACKAGES" ?/>??
?

?

用法只有如下兩行代碼:

?

  1. ActivityManager?am?=?(ActivityManager)getSystemService?(Context.ACTIVITY_SERVICE);??
  2. am.restartPackage( "packagename" );??

?

上面要是2.2以后能通用就非常完美了,可是結(jié)果你懂得。。。

所以為了通用想到了另外一種方法,就是當(dāng)我們點(diǎn)擊“退出程序”菜單時(shí),可以從當(dāng)前Activity跳轉(zhuǎn)到主Activity(就是我們打開(kāi)程序最先啟動(dòng)的那個(gè)Activity),通過(guò)Intent告訴主Activity我要退出程序,然后主Activity調(diào)用finish()方法即可。由于這一過(guò)程很短暫,以致于我們沒(méi)觀察到Activity有任何切換就退出程序了!

同樣為了讓大家更容易理解,我做了一個(gè)Demo.為了省事,程序運(yùn)行時(shí)我直接就從MainActivity跳轉(zhuǎn)到BActivity,在BActivity有個(gè)“退出程序”菜單,點(diǎn)擊會(huì)退出程序。具體過(guò)程如下:

首先第一步:新建一個(gè)Android工程,命名為ExitDemo(目錄結(jié)構(gòu)圖如下)

Android應(yīng)用開(kāi)發(fā)完全退出程序的通用方法

第二步:定義一個(gè)工具類(lèi)Sysutil用來(lái)退出程序,這樣定義好處可以在多個(gè)Activity的時(shí)候復(fù)用,代碼如下:

?

  1. package ?com.tutor.exit;??
  2. import ?android.app.ActivityManager;??
  3. import ?android.content.Context;??
  4. import ?android.content.Intent;??
  5. public ? class ?SysUtil?{??
  6. ???? public ? static ? final ? int ??EXIT_APPLICATION?=? 0x0001 ;??
  7. ??????
  8. ???? private ?Context?mContext;??
  9. ??????
  10. ???? public ?SysUtil(Context?context){??
  11. ???????? this .mContext?=?context;??
  12. ????}??
  13. ??????
  14. ???? //完全退出應(yīng)用 ??
  15. ???? public ? void ?exit(){??
  16. ??????????
  17. //??????1.5?-?2.1之前下面兩行是ok的,2.2之后就不行了,所以不通用 ??
  18. //??????ActivityManager?am?=?(ActivityManager)mContext.getSystemService(Context.ACTIVITY_SERVICE); ??
  19. //??????am.restartPackage("com.tutor.exit"); ??
  20. ??????????
  21. ????????Intent?mIntent?=? new ?Intent();??
  22. ????????mIntent.setClass(mContext,?MainActivity. class );??
  23. ???????? //這里設(shè)置flag還是比較?重要的 ??
  24. ????????mIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);??
  25. ???????? //發(fā)出退出程序指示 ??
  26. ????????mIntent.putExtra( "flag" ,?EXIT_APPLICATION);??
  27. ????????mContext.startActivity(mIntent);??
  28. ????}??
  29. }??

?

?

第三步:修改MainActivity.java,代碼如下:

?

  1. package ?com.tutor.exit;??
  2. import ?android.app.Activity;??
  3. import ?android.content.Intent;??
  4. import ?android.os.Bundle;??
  5. public ? class ?MainActivity? extends ?Activity?{??
  6. ???? @Override ??
  7. ???? public ? void ?onCreate(Bundle?savedInstanceState)?{??
  8. ???????? super .onCreate(savedInstanceState);??
  9. ????????setContentView(R.layout.main);???????
  10. ????}??
  11. ??????
  12. ??? //這里用來(lái)接受退出程序的指令? ??
  13. ???? @Override ??
  14. ???? protected ? void ?onStart()?{??
  15. ???????? int ?flag?=?getIntent().getIntExtra( "flag" ,? 0 );??
  16. ???????? if (flag?==?SysUtil.EXIT_APPLICATION){??
  17. ????????????finish();??
  18. ????????}??
  19. ???????? super .onResume();??
  20. ??????????
  21. ????}??
  22. ???? //程序啟動(dòng)后就進(jìn)入了BActivity ??
  23. ???? @Override ??
  24. ???? protected ? void ?onResume()?{??
  25. ????????Intent?mIntent?=? new ?Intent();??
  26. ????????mIntent.setClass( this ,?BActivity. class );??
  27. ????????startActivity(mIntent);??
  28. ???????? super .onStart();??
  29. ????}??
  30. ??????
  31. ??????
  32. ???? //當(dāng)activity是單例的時(shí)候,再次啟動(dòng)該activity就不會(huì)再調(diào)用?oncreate->onstart這些方法了 ??
  33. ???? @Override ??
  34. ???? protected ? void ?onNewIntent(Intent?intent)?{??
  35. ???????? int ?flag?=?getIntent().getIntExtra( "flag" ,? 0 );??
  36. ???????? if (flag?==?SysUtil.EXIT_APPLICATION){??
  37. ????????????finish();??
  38. ????????}??
  39. ???????? super .onNewIntent(intent);??
  40. ????}??
  41. }??

?

第四步:新建一個(gè)Activity命名為BAcivity.java,記得要在配置文件里申明哦~代碼如下:

?

  1. package ?com.tutor.exit;??
  2. import ?android.app.Activity;??
  3. import ?android.os.Bundle;??
  4. import ?android.view.Menu;??
  5. import ?android.view.MenuItem;??
  6. import ?android.widget.TextView;??
  7. public ? class ?BActivity? extends ?Activity?{??
  8. ???? public ? static ? final ? int ?MENU_EXITAPPLICATION?=?Menu.FIRST;??
  9. ??????
  10. ???? @Override ??
  11. ???? protected ? void ?onCreate(Bundle?savedInstanceState)?{??
  12. ???????? super .onCreate(savedInstanceState);??
  13. ??????????
  14. ????????TextView?mTextView?=? new ?TextView( this );??
  15. ????????mTextView.setText( "Welcome?to?Frankie's?blog." );??
  16. ????????setContentView(mTextView);??
  17. ????}??
  18. ??????
  19. ???? @Override ??
  20. ???? public ? boolean ?onCreateOptionsMenu(Menu?menu)?{??
  21. ????????menu.add( 0 ,?MENU_EXITAPPLICATION,? 0 , "退出程序" );??
  22. ???????? return ? super .onCreateOptionsMenu(menu);??
  23. ????}??
  24. ??????
  25. ??????
  26. ???? @Override ??
  27. ???? public ? boolean ?onOptionsItemSelected(MenuItem?item)?{??
  28. ???????? if (item.getItemId()?==?MENU_EXITAPPLICATION){??
  29. ???????????? //其他Activity退出程序這樣調(diào)用就ok了 ??
  30. ????????????SysUtil?mSysUtil=? new ?SysUtil(BActivity. this );??
  31. ????????????mSysUtil.exit();??
  32. ????????}??
  33. ???????? return ? super .onOptionsItemSelected(item);??
  34. ????}??
  35. } ??

?

Android應(yīng)用開(kāi)發(fā)完全退出程序的通用方法


更多文章、技術(shù)交流、商務(wù)合作、聯(lián)系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號(hào)聯(lián)系: 360901061

您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點(diǎn)擊下面給點(diǎn)支持吧,站長(zhǎng)非常感激您!手機(jī)微信長(zhǎng)按不能支付解決辦法:請(qǐng)將微信支付二維碼保存到相冊(cè),切換到微信,然后點(diǎn)擊微信右上角掃一掃功能,選擇支付二維碼完成支付。

【本文對(duì)您有幫助就好】

您的支持是博主寫(xiě)作最大的動(dòng)力,如果您喜歡我的文章,感覺(jué)我的文章對(duì)您有幫助,請(qǐng)用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長(zhǎng)會(huì)非常 感謝您的哦!!!

發(fā)表我的評(píng)論
最新評(píng)論 總共0條評(píng)論
主站蜘蛛池模板: 天天插天天插天天插 | 久久99精品久久久久久水蜜桃 | 日本精品在线视频 | 91精东果冻蜜桃星空麻豆 | 色婷婷婷丁香亚洲综合不卡 | 九九国产精品 | 精品国产一区二区三区久久 | 伊人涩涩 | 奇米在线免费视频 | 欧美成人性色生活片天天看 | 久草在线在线精品观看 | 麻豆a| 亚洲原创区 | 天天射天天干天天 | 国产精品麻豆久久99 | 在线观看国产福利 | 九九99热久久国产 | 免费看一级黄色录像 | 啪啪综合网 | 日本一级作爱片在线观看 | 在线视频中文字幕 | 在线手机福利免费福利院 | 亚洲深夜在线 | 老扒夜夜春宵粗大好爽aa毛片 | 亚洲资源站资源网在线 | 国产欧美网站 | 99亚洲乱人伦精品 | 国产日韩欧美综合一区二区三区 | 四虎影视免费永久在线观看 | 国产成人久久精品 | 日韩欧美一区二区三区在线 | 蜜桃视频黄色 | 亚洲精品久久久久久动漫剧情 | 成人小视频在线播放 | 一级毛片特级毛片免费的 | 人人爽天天爽 | 9re视频这里只有精品 | h视频在线观看免费网站 | 四虎永久免费地址在线网站 | 国产日韩片 | 欧美午夜久久 |