1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90
   | /***************************************************************************************************
       L'application est une maquette permettant de  tester le lancement d'une activité (2) qui
   continue à travailler malgré l'arrêt de l'activité (1) qui l'a lancée.
   
       Ce test s'inspire de l'exemple pas très démonstratif (!!!) donné dans la page
       
                  "http://www.tutorialspoint.com/android/android_services.htm"
        
***************************************************************************************************/
package loupapet.test;
 
import java.util.Calendar;
 
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.content.SharedPreferences ;
import android.os.Bundle;
import android.view.Menu;
import android.view.View;
 
/***************************************************************************************************
                                         L'activité (1) 
***************************************************************************************************/
public class Activite1 extends Activity
{
 
  @Override
  protected void onCreate(Bundle savedInstanceState)
  {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activite_1);
 
  //*** On prend la date du moment du lancement du service uniquement pour permettre d'identifier
  //    que l'activité (2) s'exécute bien même si la présente activité (1) est arrêtée :
    Calendar cal          = Calendar.getInstance() ;
 
    int annee             = cal.get(Calendar.YEAR) ;
    int mois              = cal.get(Calendar.MONTH) + 1 ;
    int jour              = cal.get(Calendar.DAY_OF_MONTH) ;
    int heures            = cal.get(Calendar.HOUR_OF_DAY) ;
    int minutes           = cal.get(Calendar.MINUTE) ;
    int secondes          = cal.get(Calendar.SECOND) ;
    int dixiemes          = cal.get(Calendar.MILLISECOND)/100 ;
 
    String date = String.format( "%04d-%02d-%02d %02d:%02d:%02d.%1d"
                               , annee , mois   , jour
                               , heures, minutes,secondes, dixiemes) ;
 
    System.out.println( "Activité (1) : " + "Identificateur : " + date ) ;
 
  //*** On envoie cet identificateur dans les 'Shared Preferences" :
  //      1 - pour que l'activité (2) le récupère afin de tester la communication entre
  //          les deux activités (1) et (2),
  //      2 - pour que l'activité (2) montre clairement qu'elle s'exécute en continu en
  //          l'affichant dans la CatLog toutes les 5 secondes.
    SharedPreferences settings = getSharedPreferences("mes_preferences", Context.MODE_MULTI_PROCESS);
    settings.edit().putString("date", date).commit();
  }
 
//*** On crée un menu à 3 boutons :
  @Override
  public boolean onCreateOptionsMenu(Menu menu)
  {
    getMenuInflater().inflate(R.menu.activite1, menu);
    return true;
  }
 
//*** La méthode démarre le service : Elle lance donc l'activité (2) :
  public void startService(View view)
  {
    System.out.println ("Activité (1) : " + "lancement du service") ;
    startService(new Intent(getBaseContext(), Activite2.class));
  }
 
//*** La méthode met fin au service et par voie de conséquence à l'activité (2) :
  public void stopService(View view)
  {
    System.out.println ("Activité (1) : " + "arrêt du service") ;
    stopService(new Intent(getBaseContext(), Activite2.class));
  }
 
//*** La méthode permet de sortir de l'activité (1) sans arrêter le service :
//    L'activité (2) doit normalement continuer sa vie.
  public void sortie(View view)
  {
    System.out.println ("Activité (1) : " + "Sortie du l\'activité") ;
    finish() ;
  }
} | 
Partager