如何杀死Android中的进程?

2 android kill process

我有以下代码:

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;
}

}
Run Code Online (Sandbox Code Playgroud)

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

Joe*_*lin 6

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

简而言之,任何向您展示如何杀死所有后台进程的人都会对您造成伤害,并且Android社区也会受到损害.


chu*_*tox 6

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

    android.os.Process.killProcess(android.os.Process.myPid());
Run Code Online (Sandbox Code Playgroud)


ObA*_*bAt 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);
   }  
Run Code Online (Sandbox Code Playgroud)

资源

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