澳门太阳娱乐集团官网-太阳集团太阳娱乐登录

【澳门太阳娱乐集团官网】Android下甘休进度的艺
分类:操作系统

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

  近年来在做三个类似与任务管理器的东西,里面有个功能,能够通过那些管理器甘休掉其余的进度。

 

 

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

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

  该措施只好用于甘休前段时间经过本人,个人感到在前后相继遭受特别,不能不荒谬试行时,能够通过这一个法子强制退出。

  须求小心的是,那四个章程,会产生进度非平常退出,正是说,进度退出时不会去实施onPause、onStop和onDestroy方法,那么进程很有望失掉了保留数据的火候。因而,那多少个情势最棒利用在出现异常的时候!

三、甘休另叁个经过

  要经过三个经过去停止另一个经过。在前头的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.),所以提出大家利用壹个新的艺术: 

  void killBackgroundProcesses)(String packageName)

  由于这些措施未有再次回到值,所以我们也不明了大家的指标经过是或不是真的退出了。然则,笔者当下只发掘了这一个能够甘休另三个进度的秘诀。

四、退出到主荧屏(记得是对现阶段进程的管理)

  这几个办法,也是脱离当前历程的二个格局。假设大家在经过中开创了相当多的Activity,可是又不想关闭时去退出不在职责栈顶的Activity,那么就能够间接选拔这一个艺术了。这几个方式是由此查阅英特网资料来看的。在此先感谢追梦人 了(他的博客地址:,款待大家去拜会他的博客)。

意义:当按下重返键时,就再次来到到主荧屏,并富含参数FLAG_ACTIVITY_CLEAR_TOP,会清理掉当前的位移。

 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     }

  此方法确实截至了当前进度,可是通过Android平台的App Manager工具去查看的话,使用2.3.3的模拟器,会发掘刚刚被终结的进程会以Cached background Process的情势存在,况且模拟器给出明白释,说是为了下三次更便捷的起步那些进度。

===============================优雅的分水线===============================

【注明】本文系笔者原创,转发请申明小说出处:   博客园

本文由澳门太阳娱乐集团官网发布于操作系统,转载请注明出处:【澳门太阳娱乐集团官网】Android下甘休进度的艺

上一篇:windows常用命令 下一篇:没有了
猜你喜欢
热门排行
精彩图文