android杀进程方法
源文: http://www.cnblogs.com/275095923/archive/2011/09/05/2167958.html
Android 结束进程,关闭程序的方法,经过这几天的调研,发现了Android结束一个进程的方法
即采用下面这个类
void android.app.ActivityManager.restartPackage(String packageName)
public void restartPackage (String packageName)
Since: API Level 3
Have the system perform a force stop of everything associated with the given application package. All processes that share its uid will be killed, all services it has running stopped, all activities removed, etc. In addition, a ACTION_PACKAGE_RESTARTED broadcast will be sent, so that any of its registered alarms can be stopped, notifications removed, etc.
You must hold the permission RESTART_PACKAGES to be able to call this method.
Parameters
packageName
The name of the package to be stopped.
使用这个类的具体源代码
Java代码
view plain
final ActivityManager am = (ActivityManager)getSystemService(Context.ACTIVITY_SERVICE);
am.restartPackage(getPackageName());
再加上uses-permission
Xml代码
view plain
<uses-permission android:name="android.permission.RESTART_PACKAGES"></uses-permission>
结束进程还有android.os.Process.killProcess(pid)只能终止本程序的进程,无法终止其它的
public static final void killProcess (int pid)
Kill the process with the given PID. Note that, though this API allows us to request to kill any process based on its PID, the kernel will still impose standard restrictions on which PIDs you are actually able to kill. Typically this means only the process running the caller's packages/application and any additional processes created by that app; packages sharing a common UID will also be able to kill each other's processes.
public void finish ()
Call this when your activity is done and should be closed. The ActivityResult is propagated back to whoever launched you via onActivityResult().
这是结束当前activity的方法
在android2.2版本之后则不能再使用restartPackage()方法,而应该使用killBackgroundProcesses()方法
manager.killBackgroundProcesses(getPackageName());
view plain
ActivityManager manager = (ActivityManager)getSystemService(ACTIVITY_SERVICE);
manager.killBackgroundProcesses(getPackageName());
加入权限
view plain
//需要在xml中加入权限声明
<uses-permission android:name="android.permission.KILL_BACKGROUND_PROCESSES"/>
另外,在android2.2以后,如果服务在ondestroy里加上了start自己,用kill backgroudprocess通常无法结束自己。
还有一种最新发现的方法,利用反射调用forceStopPackage来结束进程
代码如下
view plain
Method forceStopPackage = am.getClass().getDeclaredMethod("forceStopPackage", String.class);
forceStopPackage.setAccessible(true);
forceStopPackage.invoke(am, yourpkgname);
需要在manifest里加上shareduid定义
view plain
android:sharedUserId="android.uid.system"
另外加上权限
view plain
<uses-permission android:name="android.permission.FORCE_STOP_PACKAGES"></uses-permission>
并且采用系统platform签名
因为需要用FORCE_STOP_PACKAGES权限,该权限只赋予系统签名级程序
即可实现强制停止指定程序
分享到:
相关推荐
Android双进程守护程序, 不会被杀死
android双进程守护,进程很难被杀死demo
android双进程守护,进程很难被杀死
Android项目实战--手机卫士29--杀死后台进程
这是一个轻量级的库,配置几行代码,就可以实现在android上实现进程常驻,也就是在系统强杀下 ,以及360获取root权限下,clean master获取root权限下都无法杀死进程
1.杀掉正在运行进程 2.可以卸载程序 3.获取所有运行的程序列表
主要介绍了Android 杀死进程的相关资料,并整理了几种实现方法,及具体实现的代码,需要的朋友可以参考下
android双进程监控 保证服务杀死后重启.rar,太多无法一一验证是否可用,程序如果跑不起来需要自调,部分代码功能进行参考学习。
Android杀不死的进程ForkNDK示例,双进程守护
要我们的应用永远活在用户的手机后台不被杀死 —— 这都是扯淡; 能做的只是通过各种手段尽量让我们的程序在后台运行的时间长一些,或者在被...1.提高进程优先级,降低被回收或杀死概率; 2.在进程被干掉后,进行拉起。
1.实现双进程守护,2,系统清理还是会被杀死,想QQ、微信、他们这些已经被厂家加入白名单了,除非你也去向厂家申明添加白名单(你要有本事哦),3第三方清理软件,像350安全卫士这样的清理软件表面上杀死了,但是...
http://blog.csdn.net/qq_28690547/article/details/50375997;关于demo的文章详解,有兴趣的童鞋可以看看,解决popupwindow/dialog的BadTokenException异常
Android实现双进程守护,如何保证Service不被Kill,onStartCommand方法,返回START_STICKY,手动返回START_STICKY,亲测当service因内存不足被kill,当内存又有的时候,service又被重新创建,比较不错,但是不能保证...
Android 实现进程及Service常驻之MarsDaemon源码
非root下服务进程常驻 root下面手机管家杀死.rar
对应博文链接:... 杀不死的服务一直是一件很头疼的问题,这边给出源码:Android 通过JNI实现双守护进程,保证服务不被杀死。完美运行在谷歌原生Android5.0系统
Android项目实战--手机卫士31--注册广播事件自动杀死进程
Android的进程保活包括两个方面:提高进程的优先级,降低进程被杀死的概率.在进程被杀死后,进行拉活.
在Kotlin中处理Android运行时权限的最简单方法