##1、已知的 kill
後臺應用程序的方法html
android.os.Process.killProcess(pid);
activityManager.killBackgroundProcesses(pkgName);
kill -9 pid
這三種方法均可以「殺死」後臺應用程序,可是都會自啓動,對於前面兩種直接使用Android的API就好了,因此就很少介紹了。這裏稍微介紹一下 最後一個方法的用法: kill -9 pid
;java
kill -9 pid
這實際上是一條shell 命令,咱們知道Android的底層是Linux系統,因此在Android上可使用全部的Linux終端命令。那麼如何結合在代碼中呢,貼一段代碼android
<!-- lang: java --> private void killProcess(String pid) { Process sh = null; DataOutputStream os = null; try { sh = Runtime.getRuntime().exec("su"); os = new DataOutputStream(sh.getOutputStream()); final String Command = "kill -9 " + pid + "\n"; os.writeBytes(Command); os.flush(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } try { sh.waitFor(); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } }
該方法最重要的功能就是告訴你,怎麼在Android程序中執行Linux shell 命令shell
##2、終極方法,殺死後臺service
而不自啓動: am (Activity Manager)
命令 相信不少人對 am
命令都挺熟悉的,它是Android系統中/system/bin/
目錄下的一條命令。不只能夠在終端下啓動一個應用程序,還能夠啓動Service
,發送 broadcast
以及Intent action
,force stop process
等等,功能很是強大。這裏咱們要用到一個功能就是強制中止應用程序! 對於命令 am
的介紹與用法,官網給的很是狀況,請參照Android 官網: http://developer.android.com/tools/help/adb.html#am微信
咱們用到的方法和功能是:am force-stop <PACKAGE>
下面是咱們的代碼舉例
code
<!-- lang: java --> private void forceStopAPK(String pkgName){ Process sh = null; DataOutputStream os = null; try { sh = Runtime.getRuntime().exec("su"); os = new DataOutputStream(sh.getOutputStream()); final String Command = "am force-stop "+pkgName+ "\n"; os.writeBytes(Command); os.flush(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } try { sh.waitFor(); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } }
經過上面的這段代碼,咱們調用forceStopAPK
方法,傳遞一個應用程序的包名,那麼咱們就能夠殺死對應的Android程序,而不會自動啓動。親測:微信,淘寶,酷我,等一系列應用,殺死後不會再啓動!htm