-
On a parfois besoin de stocker un état même après la fermeture de l’application
-
On veut pouvoir gérer les préférences utilisateur
-
On veut faire des requêtes sur des données persistantes
-
Utilisé surtout pour conserver les préférences utilisateur
-
Stockage transparent dans un fichier XML
-
Couples clé/valeur
Context context = getActivity();
SharedPreferences sharedPref = context.getSharedPreferences(
[FILE_NAME], Context.MODE_PRIVATE);
-
On peut écrire dedans :
SharedPreferences sp = getActivity().getPreferences(Context.MODE_PRIVATE); SharedPreferences.Editor editor = sp.edit(); editor.putInt("saved_score", newHighScore); editor.commit();
-
Ou y lire :
SharedPreferences sp = getActivity().getPreferences(Context.MODE_PRIVATE); int defaultValue = 12; long highScore = sp.getInt("saved_score", defaultValue);
-
Stockage dans la mémoire interne ou externe (SD)
-
Attention, la carte SD n’est pas toujours présente
-
-
API Java classique :
-
File
-
Input et Output Streams
-
-
Attention aux droits d’accès
-
Chaque application a son dossier privé :
-
/Android/data/<package_name>/files/
-
sous-dossiers :
-
cache
-
music
-
ringtones…
-
-
-
Modes d’écriture : MODE_PRIVATE, MODE_APPEND, MODE_WORLD_READABLE, MODE_WORLD_WRITEABLE
String fileName = Context.getCacheDir() + FILENAME;
FileOutputStream fos = ctx.openFileOutput(fileName, Context.MODE_PRIVATE);
-
Une base de données SQL allégée
-
API assez spécifique à base de Cursor
-
SQLiteOpenHelper
-
Cycle de vie
-
Versions de base
-
méthodes db.insert, update, delete, query et executeSQL
-
public class MySQLiteDB extends SQLiteOpenHelper {
private static final String TABLE_BOOKS = "table_books";
private static final String COL_ID = "ID";
private static final String COL_ISBN = "ISBN";
private static final String COL_TITLE = "Title";
private static final String CREATE_BDD = "CREATE TABLE " + TABLE_BOOKS + " ("
+ COL_ID + " INTEGER PRIMARY KEY AUTOINCREMENT, " + COL_ISBN + " TEXT NOT NULL, "
+ COL_TITLE + " TEXT NOT NULL);";
public MaBaseSQLite(Context context, String name, CursorFactory factory, int version) {
super(context, name, factory, version);
}
@Override
public void onCreate(SQLiteDatabase db) {
db.execSQL(CREATE_BDD);
}
@Override
public void onUpgrade(SQLiteDatabase db, int oldVersion, int newVersion) {
// Do your upgrade here
}
}
* On l'instancie :
[source,java]
MySQLiteDB db = new MySQLiteDB(context, NOM_BDD, null, VERSION_BDD);
SQLiteDatabase database = db.getWritableDatabase();
-
Cursor :
Cursor c = database.query(TABLE_BOOKS, new String[] { COL_ID, COL_ISBN, COL_TITLE }, COL_TITLE + " LIKE \"" + title +"\"", null, null, null, null);
-
Update :
ContentValues values = new ContentValues(); values.put(COL_ISBN, book.getIsbn()); values.put(COL_TITLE, book.getTitre()); return bdd.update(TABLE_BOOKS, values, COL_ID + " = " +id, null);