finish()html
針對單個Activity,會調用onDestroy方法,關閉當前Activity但並無釋放資源,若是Activity歷史棧中不單單隻包含當前的Activity,那麼會回退到以前的Activityandroid
System.exit(0)ui
針對單個Activity,不會調用onDestroy,關閉當前Activity並釋放資源,若是Activity歷史棧中不單單隻包含當前的Activity,會報錯this
android.os.Process.killProcess(android.os.Process.myPid());spa
針對單個Activity,不會調用onDestroy,關閉當前Activity並釋放資源,若是Activity歷史棧中不單單隻包含當前的Activity,會報錯.net
任務管理器模式rest
聽說這種方式將會結束和程序包關聯的一切進程(可是實測下來的效果並不理想)htm
ActivityManager am = (ActivityManager) getSystemService(ACTIVITY_SERVICE);
if( android.os.Build.VERSION.SDK_INT < 8){
am.restartPackage(getPackageName());
//須要權限android.permission.RESTART_PACKAGES
}else{
am.killBackgroundProcesses(getPackageName());
//須要權限android.permission.KILL_BACKGROUND_PROCESSES
}blog
Intent方式繼承
在從子頁面跳轉到主頁面(須要執行退出程序的頁面)時,進行intent設置來清空Activity歷史棧,而後在主頁面finish()便可
Intent intent = new Intent();
intent.setClass(ChildActivity.this, MainActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); //注意本行的FLAG設置
startActivity(intent);
Activity棧
原理就是構建一個單獨的Activity棧管理器(須要繼承Application),在每一個Activity建立的之後,加入其中,而後在退出程序時,遍歷它關閉全部Activity,代碼參考來源2...
參考來源1:http://blog.sina.com.cn/s/blog_5da93c8f0101772p.html
參考來源2:http://blog.csdn.net/sunnyfans/article/details/7688092