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