¿Cómo puedo matar procesos en Android?

Tengo este código siguiente:

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

}

Todo lo que quiero hacer es simplemente presione el botón y matar a todos los procesos en segundo plano.. el problema que tengo con este código es que cuando estoy presionando el botón me muestra el mensaje : Desafortunadamente KillAll(ese es mi nombre de la aplicación) se ha detenido. ¿Qué debo cambiar?

  • ¿Por qué quieres matar de un proceso?
  • Lo de la API de nivel de focalización?
  • ¿a qué te refieres ?
  • porque no se debe matar a las aplicaciones en Android….
  • ¿por qué killBackgroundProcesses(nombre del paquete) existe, entonces ?
  • Por favor, tenga en cuenta que un proceso en segundo plano puede estar ocupando memoria, pero no tomando ciclos de reloj, y le dará su memoria tan pronto como un proceso de primer plano de las necesidades – para matar el proceso en segundo plano los costos de tiempo extra cuando se inicia de nuevo, pero le ahorra nada…

InformationsquelleAutor | 2012-12-12

3 Kommentare

  1. 6
    1. El mensaje de que usted está consiguiendo indica que la aplicación ha dejado de funcionar. Usted tiene que mirar en su LogCat para averiguar por qué. Esto está documentado en el Android Developer Guide.
    2. Por favor indique el motivo para matar a todos los procesos en segundo plano, porque no puedo pensar en ninguna razón adecuada para ello. Las personas persisten en afirmar que «task killers» o «app asesinos» mejorar el rendimiento, pero esta actitud ignora el verdadero problema: mal escrito apps. Mientras seguimos a la afirmación de que la tarea de los asesinos de la ayuda, los usuarios seguirán usando aplicaciones que dejan de servicios innecesarios, etc. ejecutando. Forzar a los usuarios a usar el task killers es como tratar con un problema de termitas matando a uno de termitas en un momento como usted los ve. La verdadera respuesta es exterminar a todos los termitas.

    En definitiva, cualquier persona que se muestra cómo matar a todos los procesos en segundo plano está haciendo un flaco favor y el Android de la comunidad un flaco favor.

    • «En definitiva, cualquier persona que se muestra cómo matar a todos los procesos en segundo plano está haciendo un flaco favor y el Android de la comunidad un flaco favor.» +1
    • No todos los zombies son las aplicaciones, y el Android de la comunidad se extiende más allá de desarrollo de la aplicación. Cualquier persona diseñar sistemas distribuidos para móviles va a necesitar a su zombie escopeta, mientras que la exploración.
    • Quiero probar cómo una aplicación iba a reaccionar cuando android mata a uno de los servicios en segundo plano. La forma más rápida es saber cómo matar el proceso
    • Genial, este hilo es lo que google pone el primero para «android proceso de cierre por su nombre» y no hay una respuesta real. Estoy escribiendo una aplicación para mí que se va a ejecutar sólo en mi teléfono. El aceptó respuesta es inútil. A veces, ASÍ que no tiene sentido. Usted no tiene derecho a llamar a mis necesidades «un flaco favor» (tenga en cuenta que su falta de capacidad para la búsqueda de una razón que no significa nada).
  2. 6

    Puedo usar este código para matar a mi propio proceso (app) :

        android.os.Process.killProcess(android.os.Process.myPid());
    • Hacer esto tiene sentido sólo como último recurso. Si me quieres aceptar esto como una buena práctica, por favor, defenderla!
    • Independientemente de su inconveniencia, esto no es aún una respuesta a la pregunta formulada.
    • Sistema.exit(0) es probablemente mejor, ya que al menos algunos de los finalizadores llamado. Teóricamente, debería nunca ser necesario. Usted debe trabajar dentro de la aplicación del ciclo de vida, y han de pruebas de unidad en el lugar para cubrir todos los casos de borde donde las cosas salvajes vagan.
    • asesor para la actualización de hilo viejo, matar el proceso es necesario en mis aplicaciones que uso de JNI lib, porque no podemos descargar el .así lib, así que matar el proceso a fuerza de destruir el lib. así que cuando el inicio de la aplicación de nuevo, a la lib será cargado como nuevo.
    • para aquel que se pregunta por qué mi app descargar la biblioteca, porque me dibujar el visual/ver en c++
  3. 5

    Puede utilizar este código:

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

    Fuente

    Tenga en cuenta que es muy peligroso para matar aplicaciones. Si usted no sabe exactamente lo que estás haciendo, no utilice este código por favor!

Kommentieren Sie den Artikel

Bitte geben Sie Ihren Kommentar ein!
Bitte geben Sie hier Ihren Namen ein

Pruebas en línea