Академический Документы
Профессиональный Документы
Культура Документы
l
Besoin de conserver l'tat de l'interface utilisateur
- Lorsqu'un utilisateur navigue dans une application
- Pour prparer le retour sur les crans prcdents
l
Android gre le cycle de vie d'une application
- Une activit d'arrire plan peut tre dcharge de la mmoire en
fonction de la politique de gestion des ressources du systme
l
La mthode onSaveInstanceState() d'une activit est appele lorsque le
systme a besoin de librer des ressources et de dtruire l'activit
- Utilisation d'un objet de Bundle pour stocker les donnes
l
Pass en paramtre aux mthodes
- OnCreate() : rtablir l 'interface lors de la cration
- OnRestoreInstanceState() : rtablir l'interface lors de la
restauration
- Par dfaut :
l
Les valeurs de toutes les vues possdant un attribut id renseign sont
enregistres, puis restaures
l
OnSaveInstanceState() enregistre l'tat des vues identifies dans un objet
Bundle.
- L'objet Bundle est ensuite pass aux onCreate() et
onRestoreInstanceState() pour restaurer l'tat de l'activit
Gestion de la persistance des activits
import android.R;
import android.app.Activity;
import android.os.Bundle;
import android.widget.Toast;
@Override
public void onCreate(Bundle savedInstanceState) {
...}
@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
...}
@Override
protected void onSaveInstanceState(Bundle savedInstanceState) {
...}
@Override
protected void onDestroy() {
...}
}
Gestion de la persistance des activits
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main); }
@Override
protected void onSaveInstanceState(Bundle savedInstanceState) {
super.onSaveInstanceState(savedInstanceState);
Toast.makeText(this, "Etat de l'activit sauvegard",
Toast.LENGTH_SHORT).show(); }
@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
super.onRestoreInstanceState(savedInstanceState);
Toast.makeText(this, "Etat de l'activit restaur",
Toast.LENGTH_SHORT).show(); }
@Override
protected void onDestroy() {
super.onDestroy();
Toast.makeText(this, "L'activit est dtruite", Toast.LENGTH_SHORT)
.show(); }
Gestion de la persistance des activits
<TextView android:id="@+id/messageDescription"
android:layout_width="fill_parent" android:layout_height="wrap_content"
android:text="Saisissez un message (qui ne sera pas enregistr) :">
</TextView>
<EditText android:layout_width="fill_parent"
android:layout_height="wrap_content" android:textSize="18sp">
</EditText>
</LinearLayout>
Configurer le mode de conservation des
activits
l
Mode de sauvegarde par dfaut
- Avantage : pas de code spcifique
- Inconvnient : pas adapt certaines situations
l
Ne pas sauvegarder les valeurs de certains champs qui possdent un
identifiant
l
Personnalisation de l'enregistrement de l'tat d'une activit
- Redfinitions des mthodes onSaveInstanceState(), onCreate() et
onRestoreInstanceState()
- Utilisation de l'objet Bundle pour lire et crire des valeurs
Configurer le mode de conservation des
activits
import projet.seriai.android.R;
import android.app.Activity;
import android.os.Bundle;
import android.widget.Toast;
@Override
public void onCreate(Bundle savedInstanceState) {
...}
@Override
protected void onRestoreInstanceState(Bundle savedInstanceState) {
...}
@Override
protected void onSaveInstanceState(Bundle savedInstanceState) {
...}
@Override
protected void onDestroy() {
...}
}
Configurer le mode de conservation des
activits
@Override
protected void onSaveInstanceState(Bundle savedInstanceState) {
super.onSaveInstanceState(savedInstanceState);
savedInstanceState.putString(MA_CLE, "Ma valeur !");
Toast.makeText(this, "onSaveInstanceState",
Toast.LENGTH_SHORT).show();
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if ((savedInstanceState != null) &&(savedInstanceState.containsKey(MA_CLE))) {
String val = savedInstanceState.getString(MA_CLE);
Toast.makeText(this, "onCreate() : " + val,
Toast.LENGTH_SHORT).show();
}
setContentView(R.layout.persistance_etat_activite1);
}
Stockage dans des fichiers
Stockage dans des fichiers
l
Lire, crire dans le systme de fichiers
- OpenFileOutput() : ouvrir un fichier en criture ou de le crer s'il
n'existe pas
l
Retourne un FileOutputStream
l
Par dfaut : le fichier est cras s'il existe
l
Ecrire dans le fichier : write()
l
Fermer le fichier : close()
l
DeleteFile() : supprimer un fichier partir de son nom
l
Gestion de fichiers
- FileList() : retourne tous les fichiers locaux de l'application
- GetFileDir() : retourne le chemin absolu du rpertoire o tous les
fichiers crs par openFileOutput
- GetFileStreamStore : retourne le chemin absolu du rpertoire du
fichier pass en paramtre
Partager un fichier avec d'autres applications
l
Par dfaut :
- Les fichiers crs par la mthode openFileOutput sont restreints
l'application
l
Spcification d'un mode d'ouverture
- MODE_PRIVATE : mode par dfaut, fichier accessible
uniquement par l'application
- MODE_WORLD_READABLE : lecture pour les autres
application mais pas la modification
- MODE_WORLD_WRITABLE : lecture/critures aux autres
applications
- MODE_APPEND : ajouter des donnes en fin de fichier. Peut
tre combin avec un autre mode
Base de donnes SQLite
SQLite
l
SQLite : base de donnes relationnelle
- Lgre, gratuite et open Source
- Www.sqlite.org
- S'excute sans ncessiter de serveur excution des requtes dans
le mme processus de l'application
- Chaque BD SQLite est rserve son application cratrice
l
Utilisation d'un fournisseur de contenu pour partager une BD
- Possibilit de crer plusieurs BDs par application
Cration et mise jour de BD SQLite
l
Utilisation de la classe SQLiteOpenHelper
@Override
public void onCreate(SQLiteDatabase db) {
//code de cration}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// code de mise jour
}
}
Cration et mise jour de BD SQLite
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(REQUETE_CREATION_BD);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
//Dans notre cas, nous supprimons la base et les donnes pour en
// crer une nouvelle ensuite.
onCreate(db);
}
}
Cration et mise jour de BD SQLite
private static final int BASE_VERSION = 1;
private static final String BASE_NOM = "planetes.db";
/**
* La requte de cration de la structure de la base de donnes.
*/
private static final String REQUETE_CREATION_BD = "create table "
+ TABLE_PLANETES + " (" + COLONNE_ID
+ " integer primary key autoincrement, " + COLONNE_NOM
+ " text not null, " + COLONNE_RAYON + " text not null);";
/**
* L'instance de la base qui sera manipule au travers de cette classe
*/
private SQLiteDatabase maBaseDonnees;
Cration et mise jour de BD SQLite
l
Accder une base de donnes
- Utilisation des mthodes getReadableDatabase() et
getWritableDatabase
l
Besoin de rendre les traitements indpendants par rapport au type de la
source des donnes
- Utilisation des adaptateurs : encapsuler toutes les actions sur la BD
dans une classe ddie
- Voir code associ
Effectuer une requte
l
Utilisation de la mthode query()
- Retourne un curseur permettant de naviguer dans les rsultats
l
Objet Cursor
return cursorToPlanete(c);
}
l
Dmarrer un service en passant un Intent startService ()
- Android appelle la mthode onStartCommand () du service et lui
transmet l'intention