关闭应用的方法:
1.System.exit(0);
2.android.os.Process.killProcess(android.os.Process.myPid()); ActivityManager am = (ActivityManager)getSystemService(Context.ACTIVITY_SERVICE);
3. am.killBackgroundProcesses("packagename");
4. am.restartPackage("packagename"); 以上方法貌似只能退出本身应用。
强退其他应用: 利用shell 下面的的kill命令来杀掉进程从而达到退出应用的效果。kill processid; 此命令需要root权限执行 直接上代码
1. ActivityManager am = (ActivityManager)getSystemService(Context.ACTIVITY_SERVICE);
List<RunningAppProcessInfo> infos = am.getRunningAppProcesses();
for(RunningAppProcessInfo info : infos){
Log.i("---",info.processName);
if("com.test.br2".equals(info.processName)){
Log.i(TAG, info.processName+"---"+info.pid);
// Process.killProcess(info.pid);
killProcess(info.pid);
break;
}
}
2. killProcess1("packageName");
private void killProcess(int processId){
java.lang.Process process = null;
try {
process = Runtime.getRuntime().exec("su");
OutputStream os = process.getOutputStream();
os.write(("kill "+processId).getBytes());
os.flush();
os.close();
Thread.sleep(3000) //这里的sleep的目的让上面的kill命令执行完成
} catch (IOException ex) {
Log.e(TAG, "" + ex.getStackTrace());
}finally{
if(process!=null){
process.destroy();
process =null;
}
}
}
private void killProcess1(String packageName) {
Log.i(TAG, "killProcess");
java.lang.Process process = null;
try {
String processId = "";
process = Runtime.getRuntime().exec("su");
OutputStream os = process.getOutputStream();
os.write("ps \n".getBytes());
os.flush();
BufferedReader br = new BufferedReader(new InputStreamReader(process
.getInputStream()));
String inline;
while ((inline = br.readLine()) != null) {
if (inline.contains(packageName)) {
Log.i(TAG, "" + inline);
StringTokenizer processInfoTokenizer = new StringTokenizer(inline);
int count = 0;
while (processInfoTokenizer.hasMoreTokens()) {
count++;
processId = processInfoTokenizer.nextToken();
if (count == 2) {
break;
}
}
Log.i(TAG, "kill process : " + processId);
os.write(("kill " + processId).getBytes());
os.flush();
if(os!=null){
os.close();
os =null;
}
br.close();
return;
}
}
} catch (IOException ex) {
Log.e(TAG, "" + ex.getStackTrace());
}finally{
if(process!=null){
process.destroy();
process =null;
}
}
}
相关推荐
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运行时权限的最简单方法