Récupérer l’activité actuelle et la classe d’activité de base
Créer une classe de base Java nommée BaseActivity pour l’hériter
android.support.v7.app.AppCompatActivity
Ensuite, redéfinissez la méthode onCreate dans cette classe de base
Ajoutez un journal dedans
Log.d(« Activité actuelle »,getClass().getSimpleName());
Ainsi, peu importe l’activité sur laquelle nous nous trouvons, nous pouvons savoir laquelle est active
package com.foxdevelop.www.lifedemo;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
public class BaseActivity extends AppCompatActivity {
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Log.d("Activité actuelle",getClass().getSimpleName());
}
}Langage du code : JavaScript (javascript)
05-13 08:36:47.473 18499-18499/? D/Activité actuelle: MainActivity
05-13 08:36:56.460 18499-18499/com.foxdevelop.www.lifedemo D/Activité actuelle: NormalActivity
05-13 08:37:03.839 18499-18499/com.foxdevelop.www.lifedemo D/Activité actuelle: Activity3
05-13 08:38:11.104 18499-18499/com.foxdevelop.www.lifedemo D/Activité actuelle: NormalActivity
Quitter l’application en un clic
Si nous sommes sur la troisième activité, il faut appuyer trois fois sur retour pour quitter l’appli, ce qui n’est pas pratique
Appuyer sur Accueil ne ferme pas l’application, elle la met en veille.
Alors comment faire pour quitter l’application en un clic ?
Nous pouvons écrire une classe de collection dédiée pour gérer toutes les activités.
Ajoutez un gestionnaire d’activités pour gérer ce problème
C’est une classe de collection avec une liste qui stocke toutes les activités. Elle propose des méthodes add et remove pour ajouter ou supprimer une activité de la liste
Ensuite, dans l’activité de base, appelez add dans onCreate et remove dans onDestroy
De cette façon, la liste ne conserve que les activités présentes dans la pile
La liste conserve les références de chaque activité, donc appeler finish revient à agir directement sur ces activités.
Ajoutez ensuite une méthode finishAll à la classe de collection
Dans cette méthode, utilisez une boucle foreach et appelez finish sur chacune d’elles
Testons ci-dessous
Sur la troisième activité, enregistrez l’événement du bouton et appelez cette classe de collection.
Encapsulez finishAll en méthode statique.
Pour garantir une fermeture complète, utilisez la méthode système killProcess pour tuer le processus de l’application.
android.os.Process.KillProcess(android.os.Process.myPid());
Classe gestionnaire d’activités
package com.foxdevelop.www.lifedemo;
import android.app.Activity;
import java.security.PublicKey;
import java.util.ArrayList;
import java.util.List;
public class ActivityHelper {
public static List<Activity> activities = new ArrayList<Activity>();
public static void add (Activity a)
{
activities.add(a);
}
public static void remove (Activity a)
{
activities.remove(a);
}
public static void finishAll()
{
for (Activity a:activities)
{
a.finish();
}
}
}Langage du code : JavaScript (javascript)
Ajouter et supprimer des activités dans l’activité de base
Ajouter l’activité à sa création : onCreate
Supprimer l’activité à sa destruction : onDestroy
package com.foxdevelop.www.lifedemo;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
public class BaseActivity extends AppCompatActivity {
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Log.d("Activité actuelle",getClass().getSimpleName());
ActivityHelper.add(this);
}
@Override
protected void onDestroy() {
super.onDestroy();
ActivityHelper.remove(this);
}
}Langage du code : JavaScript (javascript)
Ajouter un bouton dans Activity3 pour appeler la méthode finishAll
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical" android:layout_width="match_parent"
android:layout_height="match_parent">
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Troisième activité" />
<Button
android:id="@+id/button"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="Quitter l’appli" />
</LinearLayout>Langage du code : HTML, XML (xml)
public class Activity3 extends BaseActivity {
private static final String TAG = "Troisième activité";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_3);
Log.e(TAG, "" + getTaskId());
Button b = (Button)findViewById(R.id.button);
b.setOnClickListener(
new View.OnClickListener(){
@Override
public void onClick(View view){
ActivityHelper.finishAll();
}
}
);
}
}Langage du code : PHP (php)
Opérations sur les activités