彩世界平台-彩世界时时app-彩世界开奖app苹果下载

热门关键词: 彩世界平台,彩世界时时app,彩世界开奖app苹果下载

您的位置:彩世界平台 > 网站首页 > 结束普通方法无法结束的进程

结束普通方法无法结束的进程

发布时间:2019-09-17 03:43编辑:网站首页浏览(86)

     使用ntsd程序 (如果安装过VS,在VS的安装目录下,比如“C:Program Files (x86)Debugging Tools for Windows (x86)ntsd.exe”,也可以在这里下载)

      最近在做一个类似与任务管理器的东西,里面有个功能,可以通过这个管理器结束掉其他的进程。

    ntsd -c q -p PID
    ntsd -c q -pn PName
    

      在Android平台下,结束进程的方法还是比较多的。首先指明,此处的“结束进程”,包含了结束自身进程和结束其他进程两个方面。通过查阅SDK文档和网上的一些资料,自己找到一些结束进程的方法。在这里做一些归纳和总结,文章的部分信息有可能来自网上已有的文章和帖子,由于过了比较长时间,所以若发现本文与其他文章雷同,请谅解。

    两种方法

    一、结束一个活动Activity

    一种是使用进程的ID号,将PID换成对应进程ID号即可

      要主动的结束一个活动Activity,(先强调一下,是结束一个活动,而不是进程)众所周知,肯定是finish方法啦,这个就毋庸置疑了,而且这个方法最后会调用Activity的生命周期函数onDestroy方法,结束当前的Activity,从任务栈中弹出当前的Activity,激活下一个Activity。当然其他的finish系列方法,我们不在这里做详细讨论,有兴趣的同学可以自己查阅一下SDK 的文档。

    一种是使用进程的名称,将PName换成对应的exe名字即可,比如notepad.exe

    二、强制结束当前的进程

    为了方便,写了个批处理,将该批处理和ntsd放在一起,使用时执行批处理,选择对应的方式,并输入参数即可。

      强行结束当前进程有两个方法。(呵呵,这里就是结束进程了)

    @ECHO OFF
    TITLE 结束使用普通方法无法结束的进程
    COLOR 0A
    MODE con: COLS=62 LINES=22
    
    :MENU
    set tm1=%time:~0,2%
    set tm2=%time:~3,2%
    set tm3=%time:~6,2%
    ECHO.  %date% %tm1%点%tm2%分%tm3%秒 
    ECHO.   ========================================
    ECHO.   请选择要进行的操作,然后按回车
    ECHO.   ────────────────────
    ECHO.  1    根据进程号PID结束进程
    ECHO.  2    根据进程名称结束进程
    
    ECHO.  0    退出
    ECHO.
    ECHO.请输入选择项目的序号:
    
    set /p choose=
    if "%choose%" equ "" goto MENU
    if %choose%==1 goto killusingpid
    if %choose%==2 goto killusingname
    if %choose%==0 goto END
    
    ECHO. 输入错误,请输入正确的项目序号:
    goto MENU
    
    :killusingpid
    set choose=
    ECHO.请输入进程号PID,然后按回车
    set /p proid=
    set /a i=0
    :kpid
    ntsd -c q -p %proid%
    if %i% GEQ 10 ( ( echo 结束进程%proid%失败 ) & goto MENU )
    set /a i=%i%+1
    echo 结束进程%proid%第%i%次
    tasklist | findstr /i %proid% && ( goto kpid )
    echo 结束进程ID为%proid%的程序成功或进程ID:%proid%不存在
    GOTO MENU
    
    :killusingname
    set choose=
    ECHO.请输入进程的名称(比如notepad.exe),然后按回车
    set /p proname=
    set /a i=0
    :kpname
    ntsd -c q -pn %proname%
    if %i% GEQ 10 ( ( echo 结束程序%proname%失败 ) & goto Menu )
    set /a i=%i%+1
    echo 结束程序%proname%第%i%次
    tasklist | findstr /i %proname% && goto kpname
    echo 结束程序%proname%成功或程序:%proname%未启动
    
    GOTO MENU
    
    :END
    exit
    

      1、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权限的用户来说的)

     

      2、System.exit(int code)             例子:System.exit(0);

    本文由彩世界平台发布于网站首页,转载请注明出处:结束普通方法无法结束的进程

    关键词:

上一篇:Ubuntu 11.10下JDK1.6.30服务的安装及配置

下一篇:没有了