黄色网页视频 I 影音先锋日日狠狠久久 I 秋霞午夜毛片 I 秋霞一二三区 I 国产成人片无码视频 I 国产 精品 自在自线 I av免费观看网站 I 日本精品久久久久中文字幕5 I 91看视频 I 看全色黄大色黄女片18 I 精品不卡一区 I 亚洲最新精品 I 欧美 激情 在线 I 人妻少妇精品久久 I 国产99视频精品免费专区 I 欧美影院 I 欧美精品在欧美一区二区少妇 I av大片网站 I 国产精品黄色片 I 888久久 I 狠狠干最新 I 看看黄色一级片 I 黄色精品久久 I 三级av在线 I 69色综合 I 国产日韩欧美91 I 亚洲精品偷拍 I 激情小说亚洲图片 I 久久国产视频精品 I 国产综合精品一区二区三区 I 色婷婷国产 I 最新成人av在线 I 国产私拍精品 I 日韩成人影音 I 日日夜夜天天综合

  • 
    	
    	
    
    
    
    
    
    	

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

    系統 2287 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條評論