Android 结束进程的方法

2d|字号


方法一:


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.

Demo Code:
  1. final ActivityManager am = (ActivityManager)getSystemService(Context.ACTIVITY_SERVICE);

  2. am.restartPackage(getPackageName());

再加上uses-permission

  1. <uses-permission android:name="android.permission.RESTART_PACKAGES"></uses-permission>

方法二:

android.os.Process.killProcess(pid)只能终止本程序的进程,无法终止其它的

public static final voidkillProcess(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 voidfinish()

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());



Demo Code:
  1. ActivityManager manager = (ActivityManager)getSystemService(ACTIVITY_SERVICE);

  2. manager.killBackgroundProcesses(getPackageName());

加入权限


  1. //需要在xml中加入权限声明

  2. <uses-permission android:name="android.permission.KILL_BACKGROUND_PROCESSES"/>


另外,在android2.2以后,如果服务在ondestroy里加上了start自己,用kill backgroudprocess通常无法结束自己。

方法五:
利用反射调用forceStopPackage来结束进程

Demo Code:
  1. Method forceStopPackage = am.getClass().getDeclaredMethod("forceStopPackage", String.class);

  2. forceStopPackage.setAccessible(true);

  3. forceStopPackage.invoke(am, yourpkgname);

需要在manifest里加上shareduid定义

  1. android:sharedUserId="android.uid.system"

另外加上权限

  1. <uses-permission android:name="android.permission.FORCE_STOP_PACKAGES"></uses-permission>

并且采用系统platform签名

因为需要用FORCE_STOP_PACKAGES权限,该权限只赋予系统签名级程序

即可实现强制停止指定程序


方法六:

利用linux的kill -9命令


更多相关文章

  1. Android(安卓)uses-permission权限
  2. android获取应用名称,判断应用是否安装
  3. Wifi广播状态
  4. Activity com.avcit.conference.MainActivity has leaked window
  5. Android(安卓)禁用 APP 或四大组件
  6. Android中Sample的使用方法
  7. android的常用控件总结【安卓入门五】
  8. Android(安卓)8.0 权限警告(not in privapp-permissions whitelis
  9. Android(安卓)常用的画图方法

随机推荐

  1. 导出内存(linux中)
  2. 詹金斯死了,但是pid文件存在
  3. Linux BT下载(3)-与Tracker交互
  4. 【linux】下的mkfifo 命令 和【C语言】中
  5. Linux下的文件时间
  6. 第五章 个人优化vim第二步: 开启自带辅助
  7. Media-S 简介(一个开源的DRM解决方案)
  8. Linux-2.6 所有版本内核源码下载
  9. linux下main thread如何使用pthread_join
  10. Linux下文件的打包、解压缩指令——tar,gz