2

我在下面有这段代码:

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(那是我的应用程序的名称)已经停止。我应该改变什么?

4

3 回答 3

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

简而言之,任何向您展示如何杀死所有后台进程的人都是在伤害您,而对 Android 社​​区也是一种伤害。

于 2012-12-12T20:03:03.360 回答
6

我使用这段代码来杀死我自己的进程(应用程序):

    android.os.Process.killProcess(android.os.Process.myPid());
于 2012-12-12T20:47:31.167 回答
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);
   }  

来源

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

于 2012-12-12T20:15:04.453 回答