//完全退出
//((ActivityManager)getSystemService(Context.ACTIVITY_SERVICE)).restartPackage(getPackageName());
//finish();
//android.os.Process.killProcess(android.os.Process.myPid());
//System.exit(0);
ActivityManager am = (ActivityManager)getSystemService(Context.ACTIVITY_SERVICE);
am.killBackgroundProcesses(getPackageName());
finish和杀进程都只是把当前activity干掉。如果我从A->B->C->D,这时我需要从D直接退出程序。网上查询相关资料
2.1之前版本采用第一个方法需要加入权限<uses-permission android:name="android.permission.RESTART_PACKAGES"/>
这几天刷了2.2的rom发现restartPackage方法无效,网上搜了下答案:
在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的作用很难让我们联想到是结束进程。最后一个方法需要加入权限<uses-permission android:name="android.permission.KILL_BACKGROUND_PROCESSES">
但是现在的问题是按照这种方法还是退不出!!!请教谁做过的,帮忙解决下。万分感激
------解决方案--------------------
要完全退出一个程序,用restartPackage(),killProcess()都达不到效果,android不像iPhone,有一个home键,按一下,就退出了程序。特别是killProcess()用这个的时候,屏幕会顿一下,感觉非常不好。
我自己用到过的完全退出整个程序的方法。
1.自己写一个Activitiy的管理类,最简单的是用一个List来保持,每开启一个activity,就将其加到List里。当你想完全退出程序时,你将List里的每个Activity都finish()掉就可以了。 不过个人不太喜欢使用这种方法。
2.在你的每个Activity里,注册一个特定的Broadcast,当你想退出程序时,就send一个特定的Broadcast,这样所有还没有finish的activity都可以接收到这个broadcast,接收到broadcast后,就finish掉Activity。这样该程序的所有Activity就finish了,也就达到了退出程序的效果。
如果Activity很少么,建议不要这样使用,如果很多的话,推荐使用第2种方法。foresquare for android就使用过第2种方法。