关于如何完全退出Activity
?相信能看到这里的人,都已经是找过很多文章了,先说需求,A-->B-->C 这样打开页面,在C的时候关闭finish()可以关闭D页面,但显示B页面,需求就是 当在C页面关闭,可以把ABC几个页面都关闭了。简单来说,整个程序的退出。
我也把我看过的文章和做过的经验总结一下吧:
1: Android2.1以下的程序,可以用以下方法完全退出??
??
ActivityManager am = (ActivityManager)getSystemService(ACTIVITY_SERVICE);am.restartPackage(getPackageName());
???
?? 但需要在AndroidManifest.xml声明权限????
??
<uses-permission android:name="android.permission.RESTART_PACKAGES"/>?
?
2:
ActivityManager am = (ActivityManager)getSystemService(ACTIVITY_SERVICE);am.killBackgroundProcesses(getPackageName());???
? 需要在AndroidManifest.xml里声明权限
???
<uses-permission android:name="android.permission.KILL_BACKGROUND_PROCESSES"/>
??
3:但不知道为什么,我在2.2中 killBackgroundProcesses的方法也是无效的。经过许多文章的阅读,找到了以下的方法
??? A页面代码如下:
Intent intent = new Intent();intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);//关键!intent.setClass(A.this, B.class);startActivity(intent);
?
??? B页面代码如下:?
Intent intent = new Intent();intent.setClass(B.this, C.class);startActivity(intent);
?
???? C页面代码如下:
Intent startMain = new Intent(Intent.ACTION_MAIN);startMain.addCategory(Intent.CATEGORY_HOME);//必须,没有这个你可以看看效果~startMain.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);//可无startActivity(startMain);System.exit(0);//关键,如果换成 finish()效果表面一样,但实际并无关进程
??关键是,A页面(起始页面) C页面(关闭页面)?的设置
?? 其实关于A页面的设置 很多文章都有说,但在C页面这里,却很少了。
?? 通过已上三步,基本能关掉所有进程,因为在任务管理器没有了,如果最后的System.exit(0)换成finish()任务管理器里面仍显示该项目正在运行。
??? 但这里还有一个bug的,就是关闭之后,再次启动程序,会去到B页面。。。 哈哈,这里的解决方法就很多了,根据大家的业务需求去做吧。
?
? 在Android做应用层,如果你想做好,想把体验做得更贴切,其实也是很复杂的事情。
?
希望大家看到这个文章能觉得有用,谢谢已阅者!
1 楼 1037055520 2011-08-25 但这里还有一个bug的,就是关闭之后,再次启动程序,会去到B页面。。。 哈哈,这里的解决方法就很多了,根据大家的业务需求去做吧。