终结经常方法不可以收场的长河

发布时间:2018-12-27  栏目:LINUX  评论:0 Comments

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

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.

 

效用:当按下重返键时,就回去到主屏幕,并蕴藏参数FLAG_ACTIVITY_CLEAR_TOP,会清理掉当前的移动。

为了有利于,写了个批处理,将该批处理和ntsd放在一起,使用时实施批处理,拔取相应的主意,并输入参数即可。

  1、killProcess(int pid)            
 例子:android.os.Process.killProcess(android.os.Process.myPid());

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

  要因此一个历程去得了另一个过程。在事先的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.
),所以指出大家利用一个新的形式: 

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

  这么些法子,也是退出当前进程的一个艺术。假若我们在过程中创建了许多的Activity,可是又不想关闭时去退出不在任务栈顶的Activity,那么就足以一贯利用那么些措施了。那一个艺术是透过翻看网上资料看到的。在此先感谢
追梦人
了(他的博客地址:http://www.cnblogs.com/yunfei181/archive/2011/01/24/1943128.html,欢迎我们去探视她的博客)。

 

 1     @Override
 2     public boolean onKeyDown(int keyCode, KeyEvent event) {
 3         if (keyCode == KeyEvent.KEYCODE_BACK && event.getRepeatCount() == 0) { // 按下的如果是BACK,同时没有重复  
 4                 Intent home = new Intent(Intent.ACTION_MAIN);  
 5                home.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);  
 6                home.addCategory(Intent.CATEGORY_HOME);  
 7                startActivity(home);  
 8         }
 9         return super.onKeyDown(keyCode, event);  
10     }
@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

  强行终止目前进程有多少个点子。(呵呵,那里就是终止进程了)

参考:

===============================优雅的分割线===============================

 

  此措施确实停止了目前经过,然则经过Android平台的App
Manager工具去查看的话,使用2.3.3的模拟器,会意识刚刚被终结的经过会以Cached
background
Process的花样存在,并且模拟器给出了表达,说是为了下一遍更迅捷的启航这些过程。

 

  要主动的扫尾一个活动Activity,(先强调一下,是终止一个平移,而不是经过)众所周知,肯定是finish方法啦,那个就不要置疑了,而且以此措施最后会调用Activity的生命周期函数onDestroy方法,停止近期的Activity,从任务栈中弹出当前的Activity,激活下一个Activity。当然其他的finish系列方法,我们不在这里做详细琢磨,有趣味的同窗可以友善查阅一下SDK
的文档。

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

三、截至另一个经过

https://docs.microsoft.com/zh-cn/windows-hardware/drivers/debugger/cdb-command-line-options

四、退出到主屏幕(记得是对当前过程的处理)

两种艺术

  void killBackgroundProcesses)(String packageName)

 

  该方法只可以用于为止最近过程本身,个人觉得在先后遭逢特别,不可能正常实施时,可以透过这多少个模式强制退出。

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

  在Android平台下,停止进程的方法仍旧相比多的。首先指明,此处的“停止进程”,包含了停止自己进程和得了其他进程六个方面。通过查阅SDK文档和网上的有些材料,自己找到一些收场进程的法门。在此间做一些概括和总计,著作的局部信息有可能来自网上已有些小说和帖子,由于过了相比长日子,所以若发现本文与其余作品雷同,请见谅。

  由于这些法子没有再次回到值,所以我们也不清楚我们的目的经过是否真的退出了。可是,我眼前只发现了那么些可以了结另一个进程的法门。

韩文糟糕,不可以纯粹翻译,所以指望我们温馨精通,免得对我们造成误会。我个人对这句话的解释就是,那一个点子运用是有规则的:

  需要专注的是,这六个措施,会导致进程非正常退出,就是说,进程退出时不会去执行onPause、onStop和onDestroy方法,那么进程很有可能失去了保留数据的空子。由此,这六个法子最好应用在出现异常的时候!

二、强制截至如今的进程

a、将被杀掉的历程 和 当前进程
处于同一个包依然应用程序中;

  对于这一个点子,需要详细解释一下。在SDK的文档中,解释如下:

  目前在做一个近似与任务管理器的东西,里面有个效能,可以通过那一个管理器截至掉其他的经过。

一、结束一个活动Activity

【阐明】本文系本人原创,转载请注脚作品出处:http://www.cnblogs.com/crazypebble/archive/2011/04/05/2006213.html  
博客园http://www.cnblogs.com

b、将被杀掉的历程
是由最近应用程序所创立的附加进程;

c、将被杀掉的进程 和 当前进程
共享了普通用户的UID。(这里的普通用户,是相对于Root权限的用户来说的)

留下评论

网站地图xml地图