欧美三区_成人在线免费观看视频_欧美极品少妇xxxxⅹ免费视频_a级毛片免费播放_鲁一鲁中文字幕久久_亚洲一级特黄

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

系統 1909 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條評論
主站蜘蛛池模板: 免费啪视频在线观看免费的 | 欧美日韩成人影院 | 狠狠撸电影院 | 玖玖精品视频在线观看 | 国产精品成人在线观看 | 午夜a狂野欧美一区二区 | 四虎图库 | 97美女网 | 色男人天堂 | 成人亚洲精品 | 538亚洲欧美国产日韩在线精品 | 性欧美26uuu在线观看 | 日韩 欧美 亚洲国产 | 丝袜美腿视频一区二区三区 | 国产三级理论 | 亚洲精品一区二区三区在线观看 | 国产欧美久久一区二区三区 | 青青久操视频 | 看黄网站在线看 | 成人毛片免费网站 | 免费一级特黄3大片视频 | 久久这里只有精品9 | 欧美日韩亚洲在线 | 一色屋任你操 | 久久中文字幕网 | 国产精品精品视频一区二区三区 | 亚洲成人精品久久久 | 亚洲视频在线网 | 欧美久久网 | 亚洲精品99 | 欧美最新一区二区三区四区 | 国产精品免费视频网站 | 久久69精品久久久久久久电影好 | 黄色av网站在线观看 | 成人在线国产 | 欧美白人黑人xxxx猛交 | avidolzvideo| 欧美精品在线免费观看 | 久久极品 | 五月婷六月丁香狠狠躁狠狠爱 | 久久久久久国产视频 |