`
aking86
  • 浏览: 83117 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

android杀进程方法

阅读更多

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双进程守护不会被杀死”是一种确保后台服务持续运行的技术,它结合了Android进程生命周期、Service、前台服务和跨进程通信等关键知识点,以实现应用的后台持久运行。然而,使用时需谨慎,以平衡...

    android 一个杀进程 程序分享,包含源代码

    总结,杀掉正在运行的进程、卸载程序以及获取运行的程序列表是Android开发中常见的系统管理操作,它们涉及到Android的核心服务和权限管理。理解和掌握这些知识点对于提升Android应用的性能监控和系统优化能力至关...

    android一键清缓存杀进程Demo

    在Android平台上,开发一款“一键清缓存杀进程”应用是一项常见的需求,它可以帮助用户快速释放设备内存,提高系统运行速度。"android一键清缓存杀进程Demo"就是这样一个示例项目,它展示了如何实现这样的功能。下面...

    android双进程守护,进程很难被杀死demo

    总结来说,Android双进程守护是一种提高服务稳定性的策略,通过创建两个相互关联的进程,确保即使一个被杀死,另一个也能及时恢复。然而,这并不意味着应用可以无视系统规则无限占用资源,开发者仍需遵循最佳实践,...

    android双进程守护,很难被杀死

    "android双进程守护"是一种策略,通过在两个不同的进程中启动服务,提高服务的生存能力,使其更难被系统自动杀死。 首先,了解Android服务(Service)的基本概念。Service是Android四大组件之一,用于在后台执行长...

    Android 杀死进程几种方法详细介绍

    Android 杀死进程:  对于进程结束在开发APP应用当中还是有必要的,这里整理了三种方法,大家可以根据需求选用。 当应用不再使用时,通常需要关闭应用,可以使用以下三种方法关闭android应用: 第一种方法:首先...

    Android项目实战--手机卫士29--杀死后台进程

    本实战项目聚焦于"杀死后台进程"这一关键功能,这在提升设备运行效率和节省电量方面起着重要作用。下面将详细讲解实现这个功能所需的关键知识点。 1. **权限管理**: 在Android中,为了获取和管理后台进程,应用...

    Android-提高android服务进程的优先级

    Android系统根据各个应用组件所处的进程的重要性,将其分为多个等级,包括前台进程、可见进程、重要服务进程、后台进程和服务进程。优先级越高,系统在内存不足时越不容易杀掉该进程。服务进程属于这个序列中的中间...

    android上的进程管理软件

    进程有其自己的生命周期,从创建到销毁,包括空闲、运行、后台、可杀死和停止等状态。当系统资源紧张时,Android会根据进程的重要性和当前活动状态决定哪些进程应该被优先保留或结束。 二、Activity与Service的进程...

    Android 守护进程的实现方式

    要我们的应用永远活在用户的手机后台不被杀死 —— 这都是扯淡; 能做的只是通过各种手段尽量让我们的程序在后台运行的时间长一些,或者在被...1.提高进程优先级,降低被回收或杀死概率; 2.在进程被干掉后,进行拉起。

    Android进程常驻,防止被杀死

    这是一个轻量级的库,配置几行代码,就可以实现在android上实现进程常驻,也就是在系统强杀下 ,以及360获取root权限下,clean master获取root权限下都无法杀死进程

    android模拟进程调度

    例如,当系统内存紧张时,后台进程和服务进程可能会被暂停或杀死,以释放资源给更重要的进程。 为了优化进程调度,开发者可以采用一些策略,如合理使用服务(Service)、广播接收器(BroadcastReceiver)和后台任务...

    011_android之 进程及其优先级别

    在Android系统中,进程是应用程序运行的基础,它们承载着应用的组件,如活动(Activity)、服务(Service)、广播接收器(Broadcast Receiver)和内容提供者(Content Provider)。本教程“011_android之 进程及其...

    android守护进程

    而守护进程则是独立于应用程序的,即使应用被杀死,它仍然可以继续运行。 创建Android守护进程主要包括以下步骤: 1. 创建一个新的Service子类:首先,我们需要继承自Android的Service类,并重写其关键方法,如...

    安卓后台服务相关-android双进程监控保证服务杀死后重启.rar

    本压缩包"安卓后台服务相关-android双进程监控保证服务杀死后重启.rar"就提供了这样的解决方案,探讨了如何通过双进程监控来确保服务的稳定运行。 首先,我们来理解一下什么是双进程监控。在Android中,服务通常在...

    Android 实现进程及Service常驻之MarsDaemon源码

    总的来说,`MarsDaemon`提供了一种有效的方法来实现Android进程和服务的常驻,但同时也需要开发者充分考虑系统优化和资源管理,以确保良好的用户体验。通过深入理解Android进程生命周期、服务启动模式以及系统对后台...

    Android结束进程的方法详解

    文档中提到,只有当被杀进程与当前进程属于同一应用或具有共享UID的应用才能使用此方法。这意味着它主要适用于结束应用的附加进程,而不是任意进程。 2. 使用`System.exit(int code)`: `System.exit(int code)`...

    android守护进程示例

    在Android系统中,一个守护进程(Daemon)是指在后台运行且独立于用户界面的程序,通常用于提供系统级服务。由于Android系统的设计,一般应用程序在用户退出后会被系统自动清理,无法实现常驻运行。然而,有时候...

    Android杀不死的进程ForkNDK示例,双进程守护

    这就是"Android杀不死的进程ForkNDK示例,双进程守护"的主题。 首先,我们需要理解Android进程的生命周期。Android系统会根据内存需求和应用的重要性动态管理进程,低优先级的进程可能会被系统杀死以释放资源。为...

Global site tag (gtag.js) - Google Analytics