强制结束Android进程

Android中,虽然有很多方法(API或者shell命令)杀死后台`service`,但是仍然有很多程序几秒内再次启动,导致无法真正的杀死。这里主要着重介绍如何像 360 一样杀死Android后台服务,而不会再次启动。

kill 后台应用程序的方法

* android.os.Process.killProcess(pid);

* activityManager.killBackgroundProcesses(pkgName);

* kill -9 pid

这三种方法都可以“杀死”后台应用程序,但是都会自启动,对于前面两种直接使用Android的API就行了,所以就不多介绍了。这里稍微介绍一下 最后一个方法的用法: kill -9 pid;

方法: kill -9 pid这其实是一条shell 命令,我们知道Android的底层是Linux系统,所以在Android上可以使用所有的Linux终端命令。那么如何结合在代码中呢,贴一段代码

private void killProcess(String pid) {

Process sh = null;

DataOutputStream os = null;

try {

sh = Runtime.getRuntime().exec("su");

os = new DataOutputStream(sh.getOutputStream());

final String Command = "kill -9 " + pid + "\n";

os.writeBytes(Command);

os.flush();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

try {

sh.waitFor();

} catch (InterruptedException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

该方法最重要的功能就是告诉你,怎么在Android程序中执行Linux shell 命令

杀死后台service而不自启动: am (Activity Manager)命令相信很多人对 am 命令都挺熟悉的,它是Android系统中/system/bin/目录下的一条命令。不仅可以在终端下启动一个应用程序,还可以启动Service,发送 broadcast以及Intent action ,force stop process 等等,功能非常强大。这里我们要用到一个功能就是强制停止应用程序!

对于命令 am 的介绍与用法,官网给的非常情况,请参照Android 官网: http://developer.android.com/tools/help/adb.html#am

我们用到的方法和功能是:am force-stop <PACKAGE>

下面是我们的代码举例

private void forceStopAPK(String pkgName){

Process sh = null;

DataOutputStream os = null;

try {

sh = Runtime.getRuntime().exec("su");

os = new DataOutputStream(sh.getOutputStream());

final String Command = "am force-stop "+pkgName+ "\n";

os.writeBytes(Command);

os.flush();

} catch (IOException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

try {

sh.waitFor();

} catch (InterruptedException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

通过上面的这段代码,我们调用forceStopAPK方法,传递一个应用程序的包名,那么我们就可以杀死对应的Android程序,而不会自动启动。

时间: 2024-11-03 21:18:58

强制结束Android进程的相关文章

selenium 3.0 键盘事件 +强制结束chromedriver进程代码

selenium自动化测试常常用到键盘操作,一下是键盘操作的详细操作,和部分代码.截图来自于虫师的自动化相关书籍. public static void main(String[] args) throws InterruptedException { System.setProperty("webdriver.chrome.driver", "D:/chromedriver_win32/chromedriver.exe"); ChromeOptions Optio

Linux中强制结束一个进程的终极方法

在 Linux Ubuntu 服务器上用 dnx 基于 Kestrel 成功运行一个 ASP.NET 5 站点后,怎么也无无法退出. 运行的命令如下: /data/git/dnx/artifacts/build/dnx-coreclr-linux-x64/bin/dnx . kestrelStarted 但运行之后,怎么也退不出.不管是按回车,还是按ctrl-C,还是按ctrl-Z. Started ^C^Z 直接关闭客户端 ssh 窗口,命令依然在运行,站点依然可以正常访问. 然后重新用 ss

使用ExitProcess()结束本进程,TerminateProcess()结束进程

进程只是提供了一段地址空间和内核对象,其运行时通过在其地址空间内的主线程来体现的.当主线程的进入点函数返回时,进程也就随之结束.这种进程的终止方式是进程的正常退出,进程中的所有线程资源都能够得到正确的清除.除了这种进程的正常退出方式外,有时还需要在程序中通过代码来强制结束本进程或其他进程的运行.ExitProcess()函数的原型为: void ExitProcess(UINT uExitCode); 其参数uExitCode为进程设置了退出代码.该函数具有强制性,在执行完毕后进程即被结束,因此

Android后台强制结束进程,Application入口或者activity回调的是哪个方法?

============问题描述============ dengdeng ============解决方案1============ 如果是系统强制结束,不会调用的

linux基础篇-27,强制结束进程

强制结束某个文件或目录的进程 [[email protected] ~]# fuser -v /tmp/ 用户     进程号 权限   命令 /tmp/:               root       1921 ..c.. bash [[email protected] ~]# fuser -km /tmp /tmp:                 1921c

Android进程与线程基本知识

Android进程与线程基本知识 本文介绍Android平台中进程与线程的基本知识. 很早的时候就想介绍一下Android中的进程和线程,但由于其他的事情一直给耽搁了,直到现在才能和大家一起分享下. 1.Android进程基本知识: 我们先来了解下Android中的进程基本知识. 当一个程序第一次启动的时候,Android会启动一个LINUX进程和一个主线程.默认的情况下,所有该程序的组件都将在该进程和线程中运行. 同时,Android会为每个应用程序分配一个单独的LINUX用户.Android

Android 进程保活招式大全

目前市面上的应用,貌似除了微信和手Q都会比较担心被用户或者系统(厂商)杀死问题.本文对 Android 进程拉活进行一个总结. Android 进程拉活包括两个层面: A. 提供进程优先级,降低进程被杀死的概率 B. 在进程被杀死后,进行拉活 本文下面就从这两个方面做一下总结. 1. 进程的优先级 Android 系统将尽量长时间地保持应用进程,但为了新建进程或运行更重要的进程,最终需要清除旧进程来回收内存. 为了确定保留或终止哪些进程,系统会根据进程中正在运行的组件以及这些组件的状态,将每个进

Android进程绝杀技--forceStop(转)

一.概述 1.1 引言 话说Android开源系统拥有着App不计其数,百家争鸣,都想在这"大争之世"寻得系统存活的一席之地.然则系统资源有限,如若都割据为王,再强劲的CPU也会忙不过来,再庞大的内存终会消耗殆尽,再大容量的电池续航终会昙花一现. 面对芸芸众生,无尽变数,系统以不变应万变,一招绝杀神技forceStop腾空出世,此处以adb指令的方式为例来说说其内部机理: am force-stop pkgName am force-stop --user 2 pkgName //只杀

[转]Android进程与线程基本知识

转自:http://www.cnblogs.com/hanyonglu/archive/2012/04/12/2443262.html 本文介绍Android平台中进程与线程的基本知识. 很早的时候就想介绍一下Android中的进程和线程,但由于其他的事情一直给耽搁了,直到现在才能和大家一起分享下. 1.Android进程基本知识: 我们先来了解下Android中的进程基本知识. 当一个程序第一次启动的时候,Android会启动一个LINUX进程和一个主线程.默认的情况下,所有该程序的组件都将在