Android程式完全退出的三種方法

來源:互聯網
上載者:User
Android程式完全退出的三種方法作者: Android開發網原創 時間: 2010-06-10   很多網友可能發現自己的Android程式有很多Activity,比如說主視窗A,調用了子視窗B,在B中如何關閉整個Android應用程式呢? 這裡Android123給大家三種比較簡單的方法實現。   首先要說明在B中直接使用finish(),接下來手機顯示的還是主視窗A,所以一起來看看Android開發網是如何?的吧. 1.         Dalvik VM的本地方法   android.os.Process.killProcess(android.os.Process.myPid())    //擷取PID,目前擷取自己的也只有該API,否則從/proc中自己的枚舉其他進程吧,不過要說明的是,結束其他進程不一定有許可權,不然就亂套了。  System.exit(0);   //常規java、c#的標準退出法,傳回值為0代表正常退出 2.         工作管理員方法    首先要說明該方法運行在Android 1.5 API Level為3以上才可以,同時需要許可權android.permission.RESTART_PACKAGES,我們直接結束自己的package即可,直接使用ActivityManager類的restartPackage方法即可,參數為package name,該類通過getSystemService(Context.ACTIVITY_SERVICE)來執行個體化ActivityManager對象,這種方法系統提供的,但需要顯示聲明許可權,所以使用中需要綜合考慮。 3.         根據Activity的聲明周期    我們知道Android的視窗類別提供了曆史棧,我們可以通過stack的原理來巧妙的實現,這裡我們在A視窗開啟B視窗時在Intent中直接加入標誌Intent.FLAG_ACTIVITY_CLEAR_TOP,這樣開啟B時將會清除該進程空間的所有Activity。 在A視窗中使用下面的代碼調用B視窗Intent intent = new Intent();intent.setClass(Android123.this, CWJ.class);intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);  //注意本行的FLAG設定startActivity(intent); 4.         killBackgroundProcesses方法   在Android 2.2中新增了一個API可以協助我們殺死後台進程,不過Android123再次強調其調用的API Level最小為8,killBackgroundProcesses是android.app.ActivityManager類的方法,使用時必須在androidmanifest.xml檔案中加入KILL_BACKGROUND_PROCESSES這個許可權。雖然本類還提供了restartPackage (String packageName) 方法調用的API Level為3,但是SDK中已經標記為deprecated,其實他們的原理都是一樣的,只不過過去Google的命名方式確實不是很合理,restartPackage的作用很難讓我們聯想到是結束進程。    該方法的原型 public void killBackgroundProcesses (String packageName)  僅有一個參數為package Name,使用方法比較簡單。    ActivityManager am = (ActivityManager) getSystemService(ACTIVITY_SERVICE);   am.killBackgroundProcesses("cn.com.android123.cwj");   // API Level至少為8才能使用 5.         Dalvik VM首先我們可以製造一個null 指標的異常,比如TextView.setText方法中執行一個int型的內容,由於setText方法重載了R.string.xxx這樣的資源int型內容,但是我們沒有聲明這個資源,僅僅把String寫成了int的值,就會產生一個異常,這時系統Dalvik VM會直接關閉你的進程,這招十分有效,CWJ一般平時不公布給大家。 6.         Thread.UncaughtExceptionHandler但是有的網友說了,有Force Close的對話方塊怎麼辦,其實我們通過重寫Android應用程式的Application基類自己實現Thread.UncaughtExceptionHandler介面的uncaughtException方法是可以避免出現FC視窗的,使用者感覺直接退出了一樣http://bbs.droidstouch.com/thread-1074-1-2.html

 

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.