Android下強制關閉其他程序

轉:blog.csdn.net/dliyuedong/article/details/24448899

這幾天一直在做一個Andorid應用,想實現任務管理器的效果,能夠徹底關閉其他的程序,網上也看了很多資料,很多都是使用後restartPackage或者killBackgroundProcesses函數去進行,但是這一種並不能真正的將應用關閉.我的手機是root過的defy,嘗試着使用其他的方法操作.

         ① kill -9  pid

            這個命令對於使用linux的都非常的熟悉,強制殺掉一個進程.獲取要殺掉進程的pid,然後直接執行上述命令,但是測試後發現後,在手機中setting-app中,該應用依舊是運行狀態,force close依舊可以點擊,並沒有達到效果.


       ②使用Android自帶命令(am force-stop)

            這個是查看adb幫助的時候發現的,原來adb的操作是相當的豐富的,不僅可以啓動應用,發送廣播,查看日誌,還能對應用進行操作,比如強制關閉,十分的強大.根據這個,成功實現關閉其他應用的操作.  (adb介紹官方文檔)

[java] view plain copy
 在CODE上查看代碼片派生到我的代碼片
  1. package cn.androiddevelop.flushapk.util;  
  2.   
  3. import java.io.IOException;  
  4. import java.io.OutputStream;  
  5.   
  6. /** 
  7.  * 執行android命令 
  8.  *  
  9.  * @author Yuedong Li 
  10.  *  
  11.  */  
  12. public class SuUtil {  
  13.   
  14.     private static Process process;  
  15.   
  16.     /** 
  17.      * 結束進程,執行操作調用即可 
  18.      */  
  19.     public static void kill(String packageName) {  
  20.         initProcess();  
  21.         killProcess(packageName);  
  22.         close();  
  23.     }  
  24.   
  25.     /** 
  26.      * 初始化進程 
  27.      */  
  28.     private static void initProcess() {  
  29.         if (process == null)  
  30.             try {  
  31.                 process = Runtime.getRuntime().exec("su");  
  32.             } catch (IOException e) {  
  33.                 e.printStackTrace();  
  34.             }  
  35.     }  
  36.   
  37.     /** 
  38.      * 結束進程 
  39.      */  
  40.     private static void killProcess(String packageName) {  
  41.         OutputStream out = process.getOutputStream();  
  42.         String cmd = "am force-stop " + packageName + " \n";  
  43.         try {  
  44.             out.write(cmd.getBytes());  
  45.             out.flush();  
  46.         } catch (IOException e) {  
  47.             e.printStackTrace();  
  48.         }  
  49.     }  
  50.   
  51.     /** 
  52.      * 關閉輸出流 
  53.      */  
  54.     private static void close() {  
  55.         if (process != null)  
  56.             try {  
  57.                 process.getOutputStream().close();  
  58.                 process = null;  
  59.             } catch (IOException e) {  
  60.                 e.printStackTrace();  
  61.             }  
  62.     }  
  63. }  
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章