android 怎么把进程结束掉

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了android 怎么把进程结束掉相关的知识,希望对你有一定的参考价值。

1、自己结束自己 this.finish();

2、killProcess(int pid)
例子:android.os.Process.killProcess(android.os.Process.myPid());
对于这个方法,需要详细解释一下。在SDK的文档中,解释如下:
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.
英语不好,不能准确翻译,所以希望大家自己理解,免得对大家造成误解。我个人对这句话的解释就是,这个方法使用是有条件的:
a、将被杀掉的进程 和 当前进程 处于同一个包或者应用程序中;
b、将被杀掉的进程 是由当前应用程序所创建的附加进程;
c、将被杀掉的进程 和 当前进程 共享了普通用户的UID。(这里的普通用户,是相对于Root权限的用户来说的)

3、System.exit(int code)
例子:System.exit(0);
该方法只能用于结束当前进程自身,个人觉得在程序遇到异常,无法正常执行时,可以通过这个方法强制退出。
  需要注意的是,这两个方法,会导致进程非正常退出,就是说,进程退出时不会去执行onPause、onStop和onDestroy方法,那么进程很有可能错过了保存数据的机会。因此,这两个方法最好使用在出现异常的时候!

4、killBackgroundProcesses(String packageName)
要通过一个进程去结束另一个进程。在之前的SDK版本中,一直使用方法restartPackage(packageName)方法,但是在Android的开发文档中介绍说,这个函数会导致一些问题( the previous behavior here is no longer available to applications because it allows them to break other applications by removing their alarms, stopping their services, etc.),所以建议大家使用一个新的方法:
  由于这个方法没有返回值,所以我们也不知道我们的目标进程是否真的退出了。但是,我目前只发现了这个可以结束另一个进程的方法。此方法需要权限:
<uses-permission android:name="android.permission.KILL_BACKGROUND_PROCESSES" />

5、利用反射调用forceStopPackage来结束进程

Java代码
Method forceStopPackage = am.getClass().getDeclaredMethod("forceStopPackage", String.class);
forceStopPackage.setAccessible(true);
forceStopPackage.invoke(am, yourpkgname);

注意:
需要在manifest里加上shareduid定义:android:sharedUserId="android.uid.system"
需要在manifest里加上权限:<uses-permission android:name="android.permission.FORCE_STOP_PACKAGES"></uses-permission>
需要采用系统platform签名,因为需要用FORCE_STOP_PACKAGES权限,该权限只赋予系统签名级程序,然后经编译环境重新编译,即可实现强制停止指定程序(本人亲自验证可行)

6、killall -HUP packageName || kill -9 pid

Java代码
String cmd="killall -HUP com.android.test";
try
Process process = Runtime.getRuntime().exec(cmd);
BufferedReader in = new BufferedReader(new InputStreamReader(
process.getInputStream()));
String line = null;
while ((line = in.readLine()) != null)
System.out.println("exec shell: == " + line);

catch (IOException e)
// TODO Auto-generated catch block
e.printStackTrace();


此方法理论上可行,但是应该需要系统级或底层的协助
参考技术A 葫芦侠清理加速器

进程结束后又自动启动

比如把一个进程在任务管理器上结束掉 结束掉后又自动启动了 怎么办
大哥们

安卓手机系统,有时会出现进程结束后又自动启动的现象:
1、按住Home键(也称为主屏幕键)约2-3秒,将现在的“任务管理器”选项,点击进入任务管理器 - 在屏幕上方,然后点击“活动的应用程序“选项 - 点击”完成“选项。 。

2、清除内存(进入任务管理器 - 在屏幕上方,然后点击“内存”选项 - 点击“清除内存”选项)。

3、如果该程序,检查是否是因为手机被安装第三方软件(如360手机管理软件)后,引起被设置总是自动运行。
参考技术A 只能减少进程来达到.
先在开始菜单的运行中输入msconfig在弹出的系统使用配置程序中选择服务选项卡点选隐藏所有micrsoft服务。留下杀毒的服务.所有服务其他的都取消。点下应用。
然后在启动选项卡中留下杀毒的所有启动项目和ctfmon启动项目。其他的都取消。点应用。确定。提示你是否重新启动。是。重新启动后OK了。
参考技术B 开始-运行-输入“msconfig”,进入,选择启动,勾除不要的启动项。 参考技术C 到网上找资料,学习下进程。
就知道那些可以结束,那些不可以结束,以及怎样结束。
参考技术D 有些是不能结束的,关键系统进程和一些杀毒监控的

以上是关于android 怎么把进程结束掉的主要内容,如果未能解决你的问题,请参考以下文章

Android 怎么退出整个应用程序

Android 怎么退出整个应用程式

进程结束后又自动启动

android中怎么kill掉一个activity?

进程结束后又自动启动

android里怎么实现在代码中把一个布局给隐藏掉 ?