Activités Android

Une activité est l'un des principaux éléments constitutifs du développement d'une application Android. Elle représente un écran unique avec une interface utilisateur (UI). ContextThemeWrapper est la super classe d'une activité. L'activité est le point d'entrée principal d'une application Android, tout comme la méthode principale d'un programme écrit en Java ou en C++. Une activité interagit avec l'utilisateur, elle crée donc une fenêtre pour placer les éléments de l'interface utilisateur. Une application Android peut contenir plusieurs activités, c'est-à-dire plusieurs écrans différents qui peuvent interagir les uns avec les autres et indépendamment avec l'utilisateur.


Cycle de vie d'une activité Android

L'activité Android a son propre cycle de vie. Au cours de sa vie, elle peut effectuer de nombreuses opérations. Les activités Android sont stockées et gérées dans une pile appelée pile d'activités. Une nouvelle activité arrive en haut de la pile et s'exécute, tandis que la précédente reste en dessous de la nouvelle activité dans la pile. Lorsque l'activité supérieure de la pile sort, l'activité inférieure au sommet devient active.

Les États d'une activité Android
Une activité a quatre états

  • En cours d'exécution : Une activité est en cours d'exécution lorsqu'une activité située en haut de la pile est en cours d'exécution ou active, ce qui signifie qu'elle est au premier plan de l'écran.
  • En pause : Une activité est en état de pause lorsqu'une activité est vivante mais qu'elle n'est pas focalisée dans l'état de pause. (Il s'agit d'un message contextuel affiché sur l'activité).
  • Reprise : Une activité est en état de reprise Lorsqu'une activité en pause devient active, elle est rafraîchie et redémarrée.
  • Arrêtée : Une activité est arrêtée lorsqu'une activité n'est plus visible à l'écran pour l'utilisateur.

Méthodes de rappel des activités Android

Une activité met en œuvre les méthodes de rappel suivantes :

OnCreate() : C'est la première méthode de rappel d'une activité Android. Elle est appelée lorsqu'une activité est créée. C'est là que vous définissez tous les trucs comme les boutons, les vues, la case à cocher, TextView etc.
OnStart()  :  C'est la deuxième méthode de rappel. Elle est appelée lorsque l'activité est visible à l'écran par l'utilisateur.
OnResume() : Elle est appelée après la méthode OnStart() si l'activité passe au premier plan. C'est le moment où l'utilisateur commence à interagir avec l'activité.
OnPause() : Cette méthode est suivie de OnResume(). Cette méthode est appelée lorsqu'une activité précédente est reprise.
OnStop() : Elle est appelée lorsqu'une autre activité est reprise et que cette activité n'est plus visible pour l'utilisateur. Elle devient cachée.
OnDestroy() : C'est la méthode de rappel final lorsque l'activité est terminée.
OnRestart() : Elle est appelée lorsqu'une activité redémarre.

Le diagramme suivant montre le cycle de vie complet d'une activité Android.

Cycle de vie pandacodeur

Cycle de vie d'une activité Android


Les rectangles de la figure représentent les méthodes de rappel.

Exemple de cycle de vie d'une activité

Voici l'exemple d'une activité Android. La première étape consiste à ouvrir votre Android Studio et à créer un nouveau projet. L'assistant de nouveau projet vous permettra de créer une nouvelle activité et le nom du nouveau projet est Activity Lifecycle.

Nom du fichier : MainActivity.java

package com.codinglite.activitylifecycle ;

import android.support.v7.app.AppCompatActivity ;
import android.os.Bundle ;
import android.util.Log ;
import android.widget.Toast ;

public class MainActivity extends AppCompatActivity {

    @Override
    protected void onStart() {
        super.onStart() ;
        Log.d("Activity Lifecycle", "onStart is invoked") ;
        Toast.makeText(MainActivity.this, "onStart is invoked",Toast.LENGTH_SHORT).show() ;
    }
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState) ;
        setContentView(R.layout.activity_main) ;
        Log.d("Activity Lifecycle", "onCreate is invoked") ;
        Toast.makeText(MainActivity.this, "onCreate is invoked",Toast.LENGTH_SHORT).show() ;
    }
    @Override
    protected void onStop() {
        super.onStop() ;
        Log.d("Activity Lifecycle", "onStop is invoked") ;
        Toast.makeText(MainActivity.this, "onStop is invoked",Toast.LENGTH_SHORT).show() ;
    }
    @Override
    protected void onResume() {
        super.onResume() ;
        Log.d("Activity Lifecycle", "onResume is invoked") ;
        Toast.makeText(MainActivity.this, "onResume is invoked",Toast.LENGTH_SHORT).show() ;
    }
    @Override
    protected void onPause() {
        super.onPause() ;
        Log.d("Activity Lifecycle", "onPause is invoked") ;
        Toast.makeText(MainActivity.this, "onPause is invoked",Toast.LENGTH_SHORT).show() ;
    }
    @Override
    protected void onDestroy() {
        super.onDestroy() ;
        Log.d("Activity Lifecycle", "onDestroy is invoked") ;
        Toast.makeText(MainActivity.this, "onDestroy is invoked",Toast.LENGTH_SHORT).show() ;
    }
}

}


Nom du fichier : activty_main.xml

<?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent" (en anglais)
    android:layout_height="match_parent"
    tools:context=".MainActivity">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Hello World !"
        app:layout_constraintBottom_toBottomOf="parent"
        app:layout_constraintLeft_toLeftOf="parent"
        app:layout_constraintRight_toRightOf="parent"
        app:layout_constraintTop_toTopOf="parent" />

</android.support.constraint.ConstraintLayout>
Nom du fichier : AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.codinglite.activitylifecycle">

    <application
        android:allowBackup="true"
        android:icon="@mipmap/ic_launcher"
        android:label="@string/app_name"
        android:roundIcon="@mipmap/ic_launcher_round"
        android:supportsRtl="true"
        android:theme="@style/AppTheme">
        <activity android:name=".MainActivity">
            <filtre d'intention>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>
Sortie :
Vous verrez la sortie sur l'émulateur ou l'appareil ou logcot dans android studio. Vous devez ouvrir logcat dans android studio.

// sortie IMAGE

Maintenant vous pouvez voir sur le logcat : les méthodes onCreate, onStart et onResume sont invoquées et aussi voir dans le toast.

..// IMAGE logcat

Maintenant vous pouvez cliquer sur le bouton HOME. Vous verrez que la méthode onPause est invoquée.

Après un certain temps, vous verrez que la méthode onStop est invoquée.

Vous voyez maintenant qu'il est sur la page d'accueil. Cliquez maintenant sur le bouton central pour relancer l'application.

Cliquez maintenant sur l'icône Activity Lifecycle.

Maintenant vous pouvez également voir sur le logcat : les méthodes onRestart, onStart et onResume sont invoquées.

Votre application est maintenant redémarrée.

Cliquez maintenant sur le bouton retour. Vous pouvez maintenant voir que la méthode onPause est invoquée.

Après un certain temps, vous verrez que les méthodes onStop et onDestroy sont invoquées.

Dans le cycle de vie de l'activité, les méthodes onCreate() et onDestroy() ne sont appelées qu'une seule fois au cours du cycle de vie de l'activité.

  • 1 vote. Moyenne 5 sur 5.

Ajouter un commentaire

Anti-spam