如何杀死Android中的进程?

时间:2012-12-12 19:51:52

标签: android process kill

我的代码如下:

package com.example.killall;

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu;
import android.view.View;
import android.widget.Button;
//import android.widget.TextView;
import android.app.ActivityManager;

public class MainKill extends Activity {

private Button BprocessesKill ;
//private TextView processesKill;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.main_kill);

    final ActivityManager am=(ActivityManager)     getSystemService("SYSTEM_ACTIVITY");

    BprocessesKill=(Button) this.findViewById(R.id.BkillProcesses);
    //processesKill=(TextView) this.findViewById(R.id.killProcesses);



    BprocessesKill.setOnClickListener(new View.OnClickListener() {

        @Override
        public void onClick(View arg0) {
            am.killBackgroundProcesses(getPackageName());

        }
    });

}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.main_kill, menu);
    return true;
}

}

我想要做的只是按下按钮并杀死所有后台进程..我对此代码的问题是当我按下按钮时它会向我显示消息:很遗憾KillAll(这是我应用程序的名称)已经停止。我应该改变什么?

3 个答案:

答案 0 :(得分:6)

  1. 您收到的消息表明您的应用已崩溃。您需要查看其LogCat以找出原因。这在Android开发人员指南中有记录。
  2. 请说明您杀死所有后台进程的原因,因为我无法想出任何适当的理由来执行此操作。人们坚持认为“任务杀手”或“应用程序杀手”可以提高性能,但这种态度忽略了真正的问题:写得不好的应用程序。只要我们继续声称任务杀手有所帮助,用户将继续使用会留下不必要的服务等运行的应用程序。强迫用户使用任务杀手就像通过一次杀死一个白蚁来处理白蚁问题。真正的答案是消灭所有的白蚁。
  3. 简而言之,任何向您展示如何杀死所有后台进程的人都会对您造成伤害,并且Android社区也会受到损害。

答案 1 :(得分:6)

我使用此代码来杀死我自己的进程(app):

    android.os.Process.killProcess(android.os.Process.myPid());

答案 2 :(得分:5)

您可以使用此代码:

List<ApplicationInfo> packages;
    PackageManager pm;
    pm = getPackageManager();
    //get a list of installed apps.
    packages = pm.getInstalledApplications(0);

    ActivityManager mActivityManager = (ActivityManager)context.getSystemService(Context.ACTIVITY_SERVICE);

   for (ApplicationInfo packageInfo : packages) {
        if((packageInfo.flags & ApplicationInfo.FLAG_SYSTEM)==1)continue;
        if(packageInfo.packageName.equals("mypackage")) continue;
        mActivityManager.killBackgroundProcesses(packageInfo.packageName);
   }  

Source

请记住,杀死应用程序非常危险。如果您不确切知道自己在做什么,请不要使用此代码!