首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 移动开发 > 移动开发 >

关于怎么完全退出Activity

2012-09-05 
关于如何完全退出Activity?相信能看到这里的人,都已经是找过很多文章了,先说需求,A--B--C 这样打开页面,

关于如何完全退出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页面。。。 哈哈,这里的解决方法就很多了,根据大家的业务需求去做吧。

请问:如果要回到启动模拟器的最初界面,应该怎么做呢? 2 楼 1037055520 2011-08-25   可以举例说明一下  解决的办法么?灰常感谢。。

热点排行