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