Android 结束进程的几种方法
在开发过程中,遇到了测试的说关闭应用的时候出现了闪一下黑屏的情况,后面发现闪黑屏和杀掉进程有关系,这里就简单总结一下结束进程的几种方法,以及闪黑屏是如何解决的,防止以后我又忘了:)。
一 结束自己的进程
(1)android.os.Process.killProcess(android.os.Process.myPid());
android.os.Process.killProcess(android.os.Process.myPid());
因为这个应用的需求是自己的工作完成后需要杀掉自己的进程,所以代码里面用了这个方法,也就是因为这句代码,出现了应用结束之后闪黑屏,这个有两个解决方法,一个是在activity的onDestroy里结束自己的进程,二是可以调用activity.finish()结束之后,使用延迟结束进程。更推荐第一种方法,第二种方法的延迟时间如果非常非常短,几十毫秒的话是解决不了闪黑屏的问题的。
使用这个方法只能结束自己的进程,并且程序运行到这个方法就会直接结束进程,不会走到activity的onPause(),onStop()和onDestroy()生命周期,我想应该闪黑屏和不走这些生命周期有关系。
二 结束别的进程
方法一
需要在AndroidManifest.xml添加以下权限:
<uses-permission android:name="android.permission.KILL_BACKGROUND_PROCESSES"/>
代码:
ActivityManager manager = (ActivityManager)getSystemService(Context.ACTIVITY_SERVICE)
manager.killBackgroundProcess(包名)
方法二
需要在AndroidManifest.xml添加以下权限:
<uses-permission android:name="android.permission.FORCE_STOP_PACKAGES" />
代码:
try{
ActivityManager manager= (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
Method method = manager.getClass().getMethod("forceStopPackage", String.class);
method.setAccessible(true);
method.invoke(manager, 包名);
}catch(Exception e){
e.printStackTrace();
}
另外一个应用是通过其他应用杀死进程而出现的闪黑屏问题,这里后面改用了应用在关闭另一个应用时采用发广播的方式,当被关闭的应用接收到广播后结束掉自己。
以上,就是我的第一篇博客。