English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Método para cerrar todas las actividades en el desarrollo de Android

Cuando se abren múltiples activity en la aplicación, debido a que la entrada es muy profunda, muchos aplicaciones tienen que hacer que el usuario retroceda paso a paso a la primera interfaz (MainActivity), y liberar uno por uno mientras se retrocede.

Hoy en día, se escribe en kotlin para implementar el método de salida directa de la aplicación en cualquier lugar.

Primero, cada vez que se abra una activity, se necesita un lugar para hacer un registro para que un bucle pueda recorrer el código y liberar todos los recursos de activity utilizados.

Por lo tanto, crear un array. Aquí se utiliza MutableList porque tiene métodos add y remove, lo que es muy útil.

var activities:MutableList<Activity> = arrayListOf()

Este array se utiliza para registrar cuántas activity se han abierto actualmente.

Entonces, cada vez que se abra una nueva activity, se debe ejecutar una acción para agregarla a este array.

fun ActivityAdd(activity:Activity){
  activities.add(activity)
}

Luego, escribir la operación más nuclear, liberar todas las activity.

Primero, recorrer el array, verificar si el activity que se está recorriendo es null, si no es null, significa que el actual aún no se ha liberado, por lo que se debe finalizar esta activity y eliminarla del array.

fun ActivityFinishAll(){
  for (activity:Activity in activities){
    if (activity != null){
      activity.finish()
      activities.remove(activity)
    }
  }
}

Esto aún no está completo, se debe ejecutar la acción de agregar al array en cada onCreate de activity

ActivityAdd(this)

Escriba en override fun onCreate(savedInstanceState: Bundle?}) dentro del método.

  override fun onCreate(savedInstanceState: Bundle?}) {
    super.onCreate(savedInstanceState)
    setContentView(R.layout.activity_main)
    ActivityAdd(this)
    ...
  }

Por supuesto, esto no es suficiente, también se necesita implementar la función de eliminación para activity individual.

fun ActivityRemove(activity: Activity){
  activities.remove(activity)
}

De esta manera, se tienen las funciones básicas.

PS: OtrosMétodo para cerrar la activity

Cuatro métodos para finalizar la activity actual

//Método uno para cerrar la activity actual 
  finish(); 
//Método dos para cerrar la interfaz actual 
  android.os.Process.killProcess(android.os.Process.myPid());    
//Método tres para cerrar la interfaz actual 
  System.exit(0);  
//Método cuatro para cerrar la interfaz actual 
  this.onDestroy(); 

Pero si ya se han iniciado cuatro Activity: A, B, C y D,

En el Activity D, quiero lanzar otro Activity B, pero no convertirse en A, B, C, D, B, sino que deseo que sea A, B, y los datos en B se conserven

Intent intent = new Intent(); 
intent.setClass(TableActivity.this, FrameActivity.class); 
intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);//Configurar para no refrescar la interfaz de destino que se va a saltar 
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);//它可以关闭所要到达的界面中间的activity 
startActivity(intent); 

Si ya se han iniciado cuatro Activity: A, B, C y D,

En el Activity D, quiero lanzar otro Activity B, pero no convertirse en A, B, C, D, B, sino que deseo que sea A, B, y los datos en B no se conserven

Intent intent = new Intent(); 
intent.setClass(TableActivity.this, FrameActivity.class); 
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);//它可以关闭所要到达的界面中间的activity 
startActivity(intent); 

如果已经启动了四个Activity:A,B,C和D,在D Activity里,想再启动一个 Activity B,但不变成A,B,C,D,B,而是希望是A,C,D,B,则可以像下面写代码:

Intent intent1 = new Intent(TableActivity.this, FrameActivity.class);  
intent1.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);   
startActivity(intent1);  

如果已经启动了四个Activity:A,B,C和D,在D Activity里,想要一次性关闭所有的activity

创建一个专门用来处理activity的类

package com.layout;  
import java.util.LinkedList;  
import java.util.List;  
import android.app.Activity;  
import android.app.Application;  
/** 
 * 一个类,用来结束所有后台activity 
 * @author Administrator 
 * 
 */ 
public class SysApplication extends Application { 
  //运用list来保存每一个activity是关键 
  private List<Activity> mList = new LinkedList<Activity>(); 
  //为了实现每次使用该类时不创建新的对象而创建的静态对象 
  private static SysApplication instance;  
  //构造方法 
  private SysApplication(){} 
  //实例化一次 
  public synchronized static SysApplication getInstance(){  
    if (null == instance) {  
      instancia = new SysApplication();  
    }  
    devolver instancia;  
  }  
  // Añadir Actividad  
  public void addActivity(Activity activity) {  
    mList.add(activity);  
  }  
  //Cerrar cada activity dentro de la lista 
  public void exit() {  
    try {  
      for (Activity activity:mList) {  
        if (activity != null)  
          activity.finish();  
      }  
    }  
      e.printStackTrace();  
    }  
      System.exit(0);  
    }  
  }  
  //Matar proceso 
  public void onLowMemory() {  
    super.onLowMemory();    
    System.gc();  
  }  
} 

Agregar esto a cada activity creada

SysApplication.getInstance().addActivity(this); 

Añadir esta activity a la lista.

Cuando desee cerrar, llame al método exit de SysApplication

//Cerrar todo el programa 
SysApplication.getInstance().exit()

Esto es todo el contenido de este artículo, esperamos que sea útil para su aprendizaje y que todos apoyen a Tutorial de alarido.

Declaración: el contenido de este artículo se obtiene de la red, es propiedad del autor original, el contenido se contribuye y sube por los usuarios de Internet, este sitio no posee los derechos de propiedad, no se ha editado artificialmente y no asume responsabilidad por las responsabilidades legales relacionadas. Si encuentra contenido sospechoso de infracción de derechos de autor, le invitamos a enviar un correo electrónico a: notice#oldtoolbag.com (al enviar un correo electrónico, reemplace # con @) para denunciar y proporcionar evidencia relevante. Una vez confirmado, este sitio eliminará inmediatamente el contenido sospechoso de infracción.

Te gustará