強制結束Android進程

來源:互聯網
上載者:User

標籤:

Android中,雖然有很多方法(API或者shell命令)殺死後台`service`,但是仍然有很多程式幾秒內再次啟動,導致無法真正的殺死。這裡主要著重介紹如何像 360 一樣殺死Android後台服務,而不會再次啟動。
kill 後台應用程式的方法
* android.os.Process.killProcess(pid);
* activityManager.killBackgroundProcesses(pkgName);
* kill -9 pid
這三種方法都可以“殺死”後台應用程式,但是都會自啟動,對於前面兩種直接使用Android的API就行了,所以就不多介紹了。這裡稍微介紹一下 最後一個方法的用法: kill -9 pid;
方法: kill -9 pid這其實是一條shell 命令,我們知道Android的底層是Linux系統,所以在Android上可以使用所有的Linux終端命令。那麼如何結合在代碼中呢,貼一段代碼
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 命令
殺死後台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>
下面是我們的代碼舉例
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程式,而不會自動啟動。



強制結束Android進程

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.