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

Android應用開發完全退出程序的通用方法

系統 1827 0

?

?

Android應用開發完全退出程序的通用方法!!!

分類:? Android基礎教程 ? 18356人閱讀 ? 評論 (60) ? 收藏 ? 舉報

大家好,好久不見了,我們在開發一個android應用時,有可能有N個Activity,而在每個Activity里的菜單里有個"退出程序"菜單,這里就要完全退出程序了,所以今天給大家分享的是Android應用開發完全退出程序的通用方法,以前我在網上收了幾種方法,但都不能通用,比如:任務管理器方法(ActivityManager):

首先要說明該方法運行在Android 1.5 - 2.1 才可以(不過蠻好用的撒!),2.2以后就不行了,同時需要加如下權限:

?

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

?

用法只有如下兩行代碼:

?

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

?

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

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

同樣為了讓大家更容易理解,我做了一個Demo.為了省事,程序運行時我直接就從MainActivity跳轉到BActivity,在BActivity有個“退出程序”菜單,點擊會退出程序。具體過程如下:

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

Android應用開發完全退出程序的通用方法

第二步:定義一個工具類Sysutil用來退出程序,這樣定義好處可以在多個Activity的時候復用,代碼如下:

?

  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. ???? //完全退出應用 ??
  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. ???????? //這里設置flag還是比較?重要的 ??
  24. ????????mIntent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);??
  25. ???????? //發出退出程序指示 ??
  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. ??? //這里用來接受退出程序的指令? ??
  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. ???? //程序啟動后就進入了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. ???? //當activity是單例的時候,再次啟動該activity就不會再調用?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. }??

?

第四步:新建一個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退出程序這樣調用就ok了 ??
  30. ????????????SysUtil?mSysUtil=? new ?SysUtil(BActivity. this );??
  31. ????????????mSysUtil.exit();??
  32. ????????}??
  33. ???????? return ? super .onOptionsItemSelected(item);??
  34. ????}??
  35. } ??

?

Android應用開發完全退出程序的通用方法


更多文章、技術交流、商務合作、聯系博主

微信掃碼或搜索:z360901061

微信掃一掃加我為好友

QQ號聯系: 360901061

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

【本文對您有幫助就好】

您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描上面二維碼支持博主2元、5元、10元、自定義金額等您想捐的金額吧,站長會非常 感謝您的哦!!!

發表我的評論
最新評論 總共0條評論
主站蜘蛛池模板: 久久这里只精品 | 亚洲精品第四页中文字幕 | 四月婷婷七月婷婷综合 | 91亚洲成人 | 色偷偷免费视频 | 亚洲欧洲尹人香蕉综合 | 欧美一级久久 | 爱爱日韩 | 欧美一级午夜免费视频你懂的 | 亚洲网视频 | 亚洲字幕久久 | 男女交黄| 亚洲免费视频观看 | 国产日日操 | 四虎视频在线精品免费观看 | 国产日本久久久久久久久婷婷 | 久久精品动漫99精品动漫 | 在线免费不卡视频 | 久久精品伦理 | 久久精品动漫 | 今天的恋爱未删减在线观看 | 天天视频黄 | 亚欧有色亚欧乱色视频 | 天天操天天射天天 | 女人隐私秘视频黄www免费 | 在线xxxx| 精品一久久香蕉国产线看观 | 在线精品福利 | 操一操日一日 | 性欧美视频在线观看 | 日韩欧美高清视频 | 香蕉视频在线观看黄 | 日韩一区二区免费视频 | 天天综合网天天做天天受 | 精品国精品国产自在久国产不卡 | 免费观看欧美一级特黄 | 国产欧美另类久久久品 | 91福利影院 | 亚洲精品免费在线观看 | 国产成人咱精品视频免费网站 | 婷婷六月综合网 |