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

Methode zum Schließen aller Activities in der Android-Entwicklung

Wenn mehrere Activitys im App geöffnet sind, müssen viele Apps den Benutzer schrittweise zur ersten Oberfläche (MainActivity) zurückführen, da der Einstieg tief ist. Während des schrittweisen Zurückführens werden die Activitys nacheinander freigegeben.

Heute werde ich Kotlin verwenden, um eine Methode zum Beenden der Anwendung an jeder beliebigen Stelle zu implementieren.

Zunächst muss ein Ort eingerichtet werden, um die Öffnung jeder Activity zu protokollieren, um sicherzustellen, dass ein Loop-Code alle verwendeten Activity-Ressourcen freigibt.

Daher wird ein Array erstellt. Hier wird MutableList verwendet, da es die Methoden add und remove hat und sehr nützlich ist.

var activities: MutableList<Activity> = arrayListOf()

Dieses Array wird verwendet, um die Anzahl der geöffneten Activitys zu verfolgen.

Daher muss bei jedem Öffnen einer neuen Activity eine Aktion ausgeführt werden, um diese in das Array hinzuzufügen.

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

Dann schreiben wir die kernige Operation, alle Activitys freizugeben.

Zunächst wird das Array durchsucht, und die betreffende Activity wird darauf überprüft, ob sie bereits null ist. Wenn sie nicht null ist, bedeutet das, dass sie noch nicht freigegeben wurde. Daher wird diese Activity finish gemacht und aus dem Array entfernt.

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

Das ist noch nicht alles, es muss bei jedem activity onCreate die Array-Addition ausgeführt werden

ActivityAdd(this)

Schreibe es in override fun onCreate(savedInstanceState: Bundle?) im Methodenblock.

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

Natürlich ist das noch nicht genug, es muss auch die separate activity entfernt werden

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

Dadurch ist die Grundfunktion vorhanden.

PS: AndereMethode, um die activity zu schließen

Vier Methoden, um die aktuelle activity abzuschließen

//Methode eins, die aktuelle activity zu schließen 
  finish(); 
//Methode zwei, die aktuelle Oberfläche zu schließen 
  android.os.Process.killProcess(android.os.Process.myPid());    
//Methode drei, die aktuelle Oberfläche zu schließen 
  System.exit(0);  
//Methode vier, die aktuelle Oberfläche zu schließen 
  this.onDestroy(); 

Aber wenn bereits vier Activitys gestartet wurden: A, B, C und D,

In der D Activity möchte man eine weitere Activity B starten, aber nicht in die Reihenfolge A, B, C, D, B, sondern dass es A, B ist und die Daten auf B weiterhin beibehalten werden

Intent intent = new Intent(); 
intent.setClass(TableActivity.this, FrameActivity.class); 
intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP);//Stellen Sie sicher, dass die zu wechselnde Oberfläche nicht aktualisiert wird 
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);//它可以关掉所要到的界面中间的activity 
startActivity(intent); 

Wenn bereits vier Activitys gestartet wurden: A, B, C und D,

In der D Activity, möchte man eine weitere Activity B starten, aber nicht in die Reihenfolge A, B, C, D, B, sondern dass es A, B ist und die Daten auf B nicht beibehalten werden

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) {  
      instance = new SysApplication();  
    }  
    return instance;  
  }  
  // Activity hinzufügen  
  public void addActivity(Activity activity) {  
    mList.add(activity);  
  }  
  //Schließen Sie jede activity in der Liste 
  public void exit() {  
    try {  
      for (Activity activity:mList) {  
        if (activity != null)  
          activity.finish();  
      }  
    }  
      e.printStackTrace();  
    }  
      System.exit(0);  
    }  
  }  
  //Prozess töten 
  public void onLowMemory() {  
    super.onLowMemory();    
    System.gc();  
  }  
} 

Fügen Sie dies zu jeder activity hinzu, die erstellt wird

SysApplication.getInstance().addActivity(this); 

Fügen Sie diese activity der Liste hinzu.

Wenn Sie schließen möchten, rufen Sie die exit-Methode von SysApplication auf

//Schließen Sie das gesamte Programm 
SysApplication.getInstance().exit();

Das ist der gesamte Inhalt dieses Artikels. Wir hoffen, dass er Ihnen beim Lernen hilft und dass Sie die Unterstützung und Unterstützung des Rufen-Lehrbuchs verstärken.

Erklärung: Der Inhalt dieses Artikels wurde aus dem Internet übernommen und gehört dem Urheberrechtsinhaber. Der Inhalt wurde von Internetbenutzern freiwillig beigesteuert und hochgeladen. Diese Website besitzt keine Eigentumsrechte und hat den Inhalt nicht manuell bearbeitet. Sie übernimmt auch keine Haftung für relevante rechtliche Verantwortlichkeiten. Wenn Sie verdächtige Urheberrechtsinhalte finden, sind Sie herzlich eingeladen, eine E-Mail an notice#w zu senden.3codebox.com (Bitte ersetzen Sie # durch @, wenn Sie eine Meldung senden, und fügen Sie relevante Beweise bei. Sobald nachgewiesen, wird diese Website die涉嫌侵权的内 容立即删除。)

Empfohlen für Sie