一、Android 殺背景程序
使用 Android 的程序 api 類 android.os.Process 殺死程序 :
android.os.Process.killProcess(android.os.Process.myPid());
如果目前程序處于前台 , 殺死該程序後 , Android 系統會重新開機該程序 , 這是 Android 系統本身的機制 ;
注意 : 調用該方法殺死的應用 , 不能處于前台任務棧中 ;
使用 Java 的程序 api 類 java.lang.System 殺死程序 : 參數中傳入 0
00 表示正常退出 , 傳入其它值表示非正常退出 ;
java.lang.System.exit(0);
如果目前程序處于前台 , 殺死該程序後 , Android 系統會重新開機該程序 , 這是 Android 系統本身的機制 ;
調用該方法殺死的應用 , 不能處于前台任務棧中 ;
ActivityManager 會監聽前台程序 , 一旦發現應用不是正常結束 , 就會重新開機應用 , 使用上述兩種方法殺死的程序就屬于非正常殺死的程序 , 應用程序會重新啟動 ;
二、Android 殺前台程序
關閉了所有的 Activity 界面視窗 , 應用程序自然就被殺死了 ;
activity.finishAffinity();
上述代碼可以關閉所有的本任務棧内的 Activity 視窗界面 , 自然就可以殺死本程序 ; 如果想要殺得更徹底 , 使用該方法與上面的兩種殺程序的方法結合使用 ;
殺死前台程序 , 将所有的 Activity 關閉 , 然後調用 android.os.Process.killProcess(android.os.Process.myPid()) 或 java.lang.System.exit(0) 中的一種方法即可 ;
關閉 Activity 建議使用 Activity 類的 finishAffinity() 方法 , 該方法可以關閉目前前台任務棧中的所有 Activity , 之後再調用上述兩個殺程序的方法 , 即可成功關閉程序 , 應用不會重新開機 ;
// 1. 調用 Activity 類的 finishAffinity() 方法關閉任務棧中所有 Activity 界面
activity.finishAffinity();
// 2. 使用 Android 的程序 api 類 `android.os.Process` 殺死程序
android.os.Process.killProcess(android.os.Process.myPid());
// 3. 使用 Java 的程序 api 類 `java.lang.System` 殺死程序
java.lang.System.exit(0);
三、Android 殺其它程序
擷取 ActivityManager , 然後使用 killBackgroundProcesses 方法殺死背景的其它程序 ;
ActivityManager activityManager = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
activityManager.killBackgroundProcesses("com.google.example");
需要使用 android.permission.KILL_BACKGROUND_PROCESSES 權限 ;
在清單檔案中配置該權限 :