Android开发退出程序的方法汇总

2019-12-10 18:54:14丽君

3、任务管理器方法

 首先要说明该方法运行在Android 1.5 API Level为3以上才可以,同时需要权限android.permission.RESTART_PACKAGES,我们直接结束自己的package即可。

直接使用ActivityManager类的restartPackage方法即可,参数为package name,该类通过getSystemService(Context.ACTIVITY_SERVICE)来实例化ActivityManager对象,这种方法系统提供的,但需要显示声明权限,所以使用中需要综合考虑。

重点说下此种方式:

ActivityManager manager = (ActivityManager)getSystemService(ACTIVITY_SERVICE);
manager.restartPackage(getPackageName());

需要声明权限

这种方法会终止一切和这个程序包关联的,所有共享同一uid的process被kill,所有的activity会被removed

所有创建的服务会停止,还会发一个广播Intent.ACTION_PACKAGE_RESTARTED导致所有注册alarms被stopped, notifications被removed。

但是在Android 2.2中新增了一个API可以帮助我们杀死后台进程(Android2.3再次强调其调用的API Level最小为8)killBackgroundProcesses是android.app.ActivityManager类的方法,使用时必须在androidmanifest.xml文件中加入KILL_BACKGROUND_PROCESSES这个权限。虽然本类还提供了restartPackage (String packageName)方法调用的API Level为3,但是SDK中已经标记为deprecated,其实他们的原理都是一样的,只不过过去Google的命名方式确实不是很合理,restartPackage的作用很难让我们联想到是结束进程。