English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
Quando ci sono molte activity aperte nell'app, a causa dell'ingresso profondo, molti app devono far tornare l'utente passo dopo passo alla prima interfaccia (MainActivity), liberando una per una durante il ritorno.
Oggi scrivo in Kotlin per implementare un metodo per uscire dall'applicazione direttamente in qualsiasi posizione.
Prima di tutto, ogni volta che si apre un'activity, c'è bisogno di un luogo per registrare, in modo che un ciclo possa eseguire il codice per liberare tutte le risorse delle activity utilizzate.
Quindi, crea un array. Qui usiamo MutableList perché ha i metodi add e remove, molto utili.
var activities:MutableList<Activity> = arrayListOf()
Questo array serve a registrare quante activity sono state aperte.
Ogni volta che si apre una nuova activity, è necessario eseguire un'azione di aggiunta a questo array.
fun ActivityAdd(activity:Activity){ activities.add(activity) }
Poi scriviamo l'operazione più fondamentale, liberare tutte le activity.
Prima di tutto, eseguiamo una scansione dell'array, controlliamo se l'activity trovata è già null, se non lo è, significa che l'activity non è stata liberata, quindi dobbiamo finirla e rimuoverla dall'array.
fun ActivityFinishAll(){ for (activity:Activity in activities){ if (activity != null){ activity.finish() activities.remove(activity) } } }
Questo non è ancora finito, è necessario eseguire l'azione di aggiunta dell'array in ogni onCreate dell'activity
ActivityAdd(this)
Scriverlo all'interno del metodo override fun onCreate(savedInstanceState: Bundle?)
override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.layout.activity_main) ActivityAdd(this) ... }
Certo, questo non è sufficiente, è necessario implementare la funzione di rimozione per l'activity singola.
fun ActivityRemove(activity: Activity){ activities.remove(activity) }
Così si possiede la funzione di base.
PS: AltriMetodo di chiusura dell'activity
Cinque metodi per chiudere l'activity corrente
//Metodo uno per chiudere l'activity corrente finish(); //Metodo due per chiudere l'interfaccia corrente android.os.Process.killProcess(android.os.Process.myPid()); //Metodo tre per chiudere l'interfaccia corrente System.exit(0); //Metodo quattro per chiudere l'interfaccia corrente this.onDestroy();
Ma se sono stati avviati quattro Activity: A, B, C e D,
Nel D Activity, si desidera avviare un'altra Activity B, ma non diventare A, B, C, D, B, ma desiderare A, B e i dati su B devono essere conservati
Intent intent = new Intent(); intent.setClass(TableActivity.this, FrameActivity.class); intent.addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP); // Impostare di non aggiornare l'interfaccia utente che verrà saltata intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);//它可以关掉所要到的界面中间的activity startActivity(intent);
Se sono stati avviati quattro Activity: A, B, C e D,
Nel D Activity, si desidera avviare un'altra Activity B, ma non diventare A, B, C, D, B, ma desiderare A, B e i dati su B non devono essere conservati
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; } //Aggiungi Activity public void addActivity(Activity activity) { mList.add(activity); } //Chiudi ogni activity nella lista public void exit() { try { for (Activity activity:mList) { if (activity != null) activity.finish(); } } e.printStackTrace(); } System.exit(0); } } //Uccidi il processo public void onLowMemory() { super.onLowMemory(); System.gc(); } }
Aggiungi questo alla creazione di ogni activity
SysApplication.getInstance().addActivity(this);
Aggiungi questa activity alla lista.
Quando vuoi chiudere, chiama il metodo exit di SysApplication
//Chiudi l'intero programma SysApplication.getInstance().exit()
Questo è tutto il contenuto dell'articolo, speriamo che sia utile per la tua apprendimento, e speriamo che tutti sosteniate la guida Yell.
Dichiarazione: il contenuto di questo articolo è stato raccolto da Internet, il copyright spetta ai rispettivi autori, il contenuto è stato contribuito e caricato autonomamente dagli utenti di Internet, questo sito non detiene i diritti di proprietà, non è stato elaborato manualmente e non assume alcuna responsabilità legale. Se trovi contenuti sospetti di violazione del copyright, ti preghiamo di inviare una email a: notice#oldtoolbag.com (al momento dell'invio dell'email, sostituisci # con @) per segnalare, fornendo prove pertinenti. Una volta verificata, questo sito eliminerà immediatamente il contenuto sospetto di violazione del copyright.