>

利落经常方法无法收场的长河,Android下甘休进程

- 编辑:澳门新葡亰平台游戏 -

利落经常方法无法收场的长河,Android下甘休进程

 

二、强制截止近年来的历程

 

 

adb server is out of date.  killing...
ADB server didn't ACK
* failed to start daemon *
error: unknown host service

 

运用adb时,若出地点的错,使用adb kill-server是尚未用的,因为那时是其它进度的监听了端口,实际不是adb。小编用cmd+命令管理器化解:

输入netstat -ano | findstr "5037"  

找到下列进度

  TCP    127.0.0.1:5037         0.0.0.0:0              LISTENING       4236  

  TCP    127.0.0.1:5037         127.0.0.1:49422        ESTABLISHED     4236  

  TCP    127.0.0.1:49422        127.0.0.1:5037         ESTABLISHED     3840  

此刻把4236以此进度截至就行了。

TASKLIST | findstr "4236"

自家的是被二个叫tadb.exe的威迫了,貌似是qqmusic的历程,停止它,over

图片 1

二种艺术

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

 

四、退出到主显示器(记得是对脚下进程的管理)

一种是使用进程的名号,将PName换来对应的exe名字就能够,例如notepad.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.),所以建议大家利用二个新的章程: 

 

 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     }

一种是接纳进度的ID号,将PID换来对应进度ID号就可以

  对于这几个法子,须求详细解释一下。在SDK的文书档案中,解释如下:

为了便于,写了个批管理,将该批管理和ntsd放在一块儿,使用时实行批处理,选用相应的措施,并输入参数就能够。

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

参考:

  由于这一个办法未有重临值,所以我们也不明了大家的指标经过是不是真的退出了。然则,作者近期只发掘了那一个可以结束另二个经过的方式。

 使用ntsd程序 (如果设置过VS,在VS的设置目录下,譬喻“C:Program Files (x86)Debugging Tools for Windows (x86)ntsd.exe”,也足以在此处下载)

三、甘休另二个进度

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

b、将被杀掉的长河 是由近期应用程序所创立的增大进度;

@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

===============================优雅的分界线===============================

  如今在做八个临近与职分处理器的事物,里面有个功能,能够通过这一个管理器停止掉其余的长河。

一、停止二个活动Activity

功能:当按下重回键时,就再次来到到主显示屏,并蕴藏参数FLAG_ACTIVITY_CLEAR_TOP,会清理掉当前的位移。

  在Android平台下,甘休进度的主意依然很多的。首先指明,此处的“甘休进度”,包括了竣事自个儿进度和了结其余进度多少个地点。通过查阅SDK文书档案和英特网的部分材质,自个儿找到一些甘休进度的不二等秘书诀。在此处做一些回顾和总结,文章的有的音讯有非常大可财富于网三月有些小说和帖子,由于过了相比较长日子,所以若发掘本文与其余小说雷同,请见谅。

  void killBackgroundProcesses)(String packageName)

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.

  要前仆后继的完成八个活动Activity,(先重申一下,是终结叁个平移,并非过程)有目共睹,确定是finish方法啦,这几个就无须置疑了,何况以此法子最终会调用Activity的生命周期函数onDestroy方法,甘休如今的Activity,从职责栈中弹出当前的Activity,激活下三个Activity。当然别的的finish类别方法,大家不在这里做详细座谈,风野趣的同班能够友善查阅一下SDK 的文书档案。

  这么些措施,也是脱离当前经过的多个艺术。假若大家在经过中创设了累累的Activity,但是又不想关闭时去退出不在职分栈顶的Activity,那么就足以向来利用那几个办法了。这么些办法是透过翻看网络资料看到的。在此先感激追梦人 了(他的博客地址:,招待大家去走访她的博客)。

  要求留意的是,这八个章程,会促成进程非不荒谬退出,正是说,进度退出时不会去试行onPause、onStop和onDestroy方法,那么进度很有比相当的大可能率失掉了保留数据的时机。由此,那八个方法最棒使用在出现万分的时候!

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

  此方法确实结束了近些日子进度,可是经过Android平台的App Manager工具去查看的话,使用2.3.3的模拟器,会意识刚刚被终止的经过会以Cached background Process的花样存在,並且模拟器给出了表明,说是为了下叁次更便捷的起步这几个历程。

  该办法只好用来结束这段时间经过本身,个人认为在前后相继蒙受极度,不能够符合规律执行时,能够通过这一个主意强制退出。

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

【注脚】本文系本身原创,转发请评释小说出处:   博客园

本文由操作系统发布,转载请注明来源:利落经常方法无法收场的长河,Android下甘休进程