查了下官網,android.os.Process.killProcess(appProcessInfo.pid);只能殺死自己所創建的進程,其它進程是殺不掉的,要用到另外一個方法activityManager.killBackgroundProcesses(processName);,同是權限也要加上
<uses-permission
android:name="android.permission.KILL_BACKGROUND_PROCESSES"
/>
以下是我的測試代碼
public class ListViewActivity extends Activity {
private Button button;
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
button = (Button)
findViewById(R.id.button);
button.setOnClickListener(new
OnClickListener() {
@Override
public void
onClick(View v) {
killAll(getApplicationContext());
}
});
}
public static void killAll(Context context) {
//獲取一個ActivityManager 對象
ActivityManager activityManager = (ActivityManager) context
.getSystemService(Context.ACTIVITY_SERVICE);
//獲取系統中所有正在運行的進程
List<RunningAppProcessInfo>
appProcessInfos = activityManager
.getRunningAppProcesses();
//獲取當前activity所在的進程
String currentProcess=context.getApplicationInfo().processName;
//對系統中所有正在運行的進程進行迭代,如果進程名不是當前進程,則Kill掉
for (RunningAppProcessInfo appProcessInfo : appProcessInfos)
{
String
processName=appProcessInfo.processName;
if
(!processName.equals(currentProcess)) {
System.out.println("ApplicationInfo-->"+processName);
activityManager.killBackgroundProcesses(processName);
System.out.println("Killed
-->PID:"+appProcessInfo.pid+"--ProcessName:"+processName);
}
}
}
}
注意進程的過濾,以免把主要的進程也結束了