Opérations sur les activités

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

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *