¿Cómo matar un proceso?

Tengo dos actividades, la primera actividad es lanzada por el Lanzador, la segunda es iniciada por la primera. Cuando mato el proceso desde dentro de la primera actividad, el proceso se mata. Pero cuando lo mato desde dentro de la segunda actividad, el sistema inmediatamente lanzaría un nuevo proceso y la primera actividad. (El PID del proceso cambió.) ¿Cómo puedo hacerlo limpio?

He intentado 3 maneras diferentes de matar el proceso: System.exit (0), android.os.Process.killProcess (pid), y no programmatically del panel de los dispositivos de Eclipse.

A continuación se presentan dos acitvidades más sencillas del mundo con las que he experimentado. Ambas son clases externas en sus respectivos archivos.

public class FirstActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); ((Button)findViewById(R.id.button)).setOnClickListener( new OnClickListener() { public void onClick(View v) { startActivity(new Intent(FirstActivity.this, SecondActivity.class)); }}); } } public class SecondActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main_2); ((Button)findViewById(R.id.button)).setOnClickListener( new OnClickListener() { public void onClick(View v) { // Method 1 int pid = android.os.Process.myPid(); android.os.Process.killProcess(pid); // Method 2 System.exit(0); }}); } } 

(Yo sé que la gente dice que uno nunca debe proporcionar una interfaz de usuario para salir del programa.Pero esto es por razones de seguridad.El usuario debe tener una manera de salir del programa y cerrar el archivo para que su información no se filtró).

Puedes intentar this.finish ()

Las otras opciones matan el proceso sin informar al sistema androide, que asume que algo que el usuario quería hacer se ha estrellado y lo reinicia.

Pero sus suposiciones acerca del cierre de la actividad que evita la fuga de datos están equivocadas. Si desea proporcionar un botón de cierre de sesión, haga eso y haga que anule cualquier acceso tokens / keys que se utilizan para obtener acceso.

También piense en lo que sucede si alguna otra actividad llega al primer plano sin que el usuario salga del suyo – por ejemplo, ¿qué pasa si reciben una llamada telefónica?

Sólo mi idea, Después de iniciar la segunda actividad (esta línea),

 startActivity(new Intent(FirstActivity.this,SecondActivity.class)); 

Puedes matar la primera actividad. Mediante,

 int pid = android.os.Process.myPid(); android.os.Process.killProcess(pid); 

así que ahora la primera actividad no llegó.

De otra manera,

Puede obtener el ID del proceso de la primera actividad y enviar el identificador del proceso a la segunda actividad, a través del paquete.

Primero mata el primer proceso de actividad, luego puedes matar el segundo proceso de actividad.

así que ahora la primera actividad no llegó.

Tenía ese problema mientras soy más reciente en Android. había creado dos actividades y cambiar de un diseño a otro diseño, pero cuando matar el proceso de la segunda actividad, la primera actividad será reanudar (); y el primer diseño se mostrará en la pantalla.

respuesta de su pregunta es: en el primer reanudación de la actividad tienes que llamar a finish (); método on on onResume () método.

System.exit (0); por el uso de este todo el proceso actual será matar

  • La alarma en el AlarmManager se borra cuando se procesa el proceso
  • Android: mantener vivo un servicio de fondo (prevenir la muerte del proceso)
  • ¿Cómo puedo abrir un Fragmento de Android en un nuevo proceso?
  • La vinculación al servicio que ya fue iniciada por BroadcastReceiver crea una nueva instancia de servicio
  • Cuando su BroadcastReceiver se invoca a través de un Intent, ¿en qué proceso se ejecuta?
  • Obtener el PID de un proceso para matarlo, sin saber su nombre completo
  • Obtención de una lista de procesos en ejecución y eliminación de un proceso específico
  • Android: El proceso secundario (logcat) continúa ejecutándose después de que el proceso padre (aplicación) falleció
  • Apertura de la cámara en un proceso diferente
  • El nombre de aplicación de PackageManager siempre es nulo
  • Android proceso sigue vivo después de terminar las actividades
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.