Image
16.7.2016 0 Comments

Seriál: Programujeme pre Android 22 / Ukladanie a záloha údajov

Tento článok seriálu venujeme stručnému popisu možností ukladania (storage) a zálohy (backup) údajov. Zameriame sa pritom na tzv. zdieľané vlastnosti aplikácií. Ako obvykle si okrem teórie ukážeme príslušné úryvky programového kódu a uvedieme si postup ručného zálohovania a obnovy údajov, ktorý využijeme počas vývoja aplikácií.

Možnosti ukladania údajov

OS Android poskytuje šesť základných možností ukladania údajov:

1. Zdieľané vlastnosti – uloženie súkromných údajov základných (primitive) typov vo forme párov kľúč:hodnota,
2. Interné úložisko – uloženie súkromných údajov do vnútornej pamäte zariadenia (vrátane uloženia do tzv. dočasných cache),
3. Externé úložisko – uloženie verejných údajov do prídavnej pamäte (pevne zabudovanej v zariadení, resp. na SD kartu),
4. SQLite – uloženie údajov do súkromnej databázy,
5. Sieťové úložisko – uloženie údajov na webový server,
6. Poskytovatelia obsahu – určené na sprístupnenie súkromných údajov iným aplikáciám.

Zdieľané vlastnosti (SharedPreferences – SP)

Rozhranie SP predstavuje najjednoduchšiu formu uchovávania údajov a vlastností aplikácií. Jeho metódy sú určené na sprístupnenie a modifikáciu párov kľúč:hodnota. Konkrétne modifikačné metódy patria rozhraniu SP.Editor. Inicializačná metóda Context.getSharedPreferences(), ktorá je určená na získanie inštancie objektu SP, pracuje s dvoma argumentami: prvým je názov XML súboru, do ktorého budú ukladané páry vlastností, druhým je tzv. operačný mód:

MODE_APPEND

nové vlastnosti doplnia pôvodné vlastnosti

MODE_ENABLE_WRITE_AHEAD_LOGGING

značka pre otvorenie dB

MODE_MULTI_PROCESS

kontrola zmien údajov po predošlom načítaní SP

MODE_PRIVATE

XML súbor bude prístupný iba pre konkrétnu aplikáciu

MODE_WORLD_READABLE / WRITEABLE

z / do XML súboru môžu čítať / zapisovať aj iné aplikácie

Po získaní inštancie SP vytvoríme inštanciu rozhrania SP.Editor a to volaním metódy SP.edit(). Jednotlivé páry vlastností vytvárame volaním metód SP.Editor.putString() .putStringSet() .putBoolean() .putInt() .putLong() .putFloat(). Nakoniec voláme metódu SP.Editor.commit() pre synchrónne, resp. SP.Editor.apply() pre asynchrónne uloženie údajov do XML súboru.

Uvedené metódy ďalej dopĺňa metóda remove() určená na vymazanie konkrétneho páru a nakoniec metóda clear() určená na vymazanie všetkých párov uložených v súbore.

Zálohovanie údajov (Data Backup)

OS Android poskytuje špeciálnu službu zálohovania údajov a nastavení aplikácií na „cloudové“ úložisko. Táto služba nie je určená na bežné ukladanie rozsiahlych súborov. Musíme ju chápať iba ako úzko špecializovanú službu, pomocou ktorej dokážeme obnoviť údaje a nastavenia aplikácií v prípade ich reinštalácie, resp. továrenského resetu zariadenia.

Výsledok registrácie aplikácie na Android Backup Service

 

Komplexný proces zálohovania a obnovy údajov je riadený pomocou API BackupManager, ktoré žiada konkrétnu aplikáciu o údaje, ktoré majú byť zálohované a prenáša ich na cloudové úložisko. Aplikácia musí byť na úložisku registrovaná. Na obnovu údajov z úložiska nie je nutné vykonávať žiadnu činnosť. O všetko sa automaticky postará API, ktoré v prípade reinštalácie aplikácie, resp. továrenského resetu zariadenia zareaguje samostatne.

Proces zálohovania je síce transparentný, avšak otvorený čo znamená, že k údajom uloženým na verejnom úložisku má prístup ktokoľvek. Takouto formou nie je teda vhodné zálohovať citlivé údaje.

Praktická realizácia

Napriek tomu, že proces zálohovania a obnovy údajov je pomerne jednoduchý, nezaobíde sa bez riadne pripravených komponent:

1. najskôr musíme aplikáciu zaregistrovať na stránke Android Backup Service (developer.android.com/google/backup/signup.html), dôležité je zadať presné meno aplikácie v štandardnej forme definovanej konceptom pomenovania programových balíkov Java (Package Naming Conventions)
2. v druhom kroku musíme v manifeste aplikácie deklarovať názov tzv. zálohovacieho agenta:

3. do manifestu ďalej doplníme reťazec, ktorý získame po registrácii aplikácie na úložisku:

 
             android:value="AEdPqrEAAAAITXQz0ztgb..." />

4. definujeme programový kód zálohovacieho agenta:

public class myBackupAgent extends BackupAgentHelper {
  static final String fname = "myPrefs";
  public static final String keyName = "keyValue";
  @Override
  public void onCreate() {
    SharedPreferencesBackupHelper helper = new SharedPreferencesBackupHelper(this, fname);
    addHelper(keyName, helper);
  }
}

Obr. 2 Android menu „Zálohovanie a resetovanie“ vrátane schémy transportu údajov

Zálohovací agent môže vzniknúť rozšírením triedy BackupAgent, alebo triedy BackupAgentHelper. Odporúča sa používať druhú z menovaných, pri ktorej nie je potrebné implementovať metódy onBackup() ani onRestore(). Naopak, Android framework nám v tomto prípade ponúka tzv. pomocníkov (helpers), napr. SharedPreferencesBackupHelper. Ten nám umožňuje automatizovať zálohu a obnovu SP, ktoré sme predstavili na začiatku tohto článku.

Požiadavku na vykonanie zálohy zadáme metódou dataChanged(). Obnovu údajov vykonáva systém automaticky. V prípade ak požadujeme obnoviť údaje manuálne, použijeme metódu requestRestore(). BackupManager pri obnove údajov kontroluje atribút android:versionCode aplikácie a v prípade, že je verzia nainštalovanej aplikácie staršia ako verzia údajov zálohovaných na úložisku, obnovu nevykoná.

Použitie emulátora

V prípade ak pri vývoji aplikácií používame emulátor (virtuálne zariadenie AVD), test zálohovania a obnovy údajov môžeme vykonať nasledujúcim postupom:

1. povolíme BackupManager:

./adb -s meno_AVD shell bmgr enable true

2. pripravíme požiadavku na zálohovanie:

./adb -s meno_AVD shell bmgr backup názov_aplikácie

3. spustíme zálohovanie:

./adb -s meno_AVD shell bmgr run

4. odinštalujeme aplikáciu:

./adb -s meno_AVD uninstall názov_aplikácie

5. znovu nainštalujeme aplikáciu a preveríme stav obnovy zálohovaných údajov z úložiska.

Zobrazit Galériu
Autor: Marek Sopko

Nechajte si posielať prehľad najdôležitejších správ emailom

Mohlo by Vás zaujímať

ITPro

Linux súkromne i pracovne v2.0 (14. časť): Small Business Server

09.11.2016 14:57

Pojem Small Business Server (malý firemný server) začala používať spoločnosť Microsoft ešte v roku 2000 na označenie servera, ktorý ­dokázal plniť úlohy niekoľkých samostatných serverov. Aplikačná vrs ...

ITPro

Industry 4.0: Fikcia alebo už realita?

09.11.2016 14:52

Štvrtá priemyselná revolúcia je pomenovanie rozsiahlych zmien prudko vstupujúcich do súčasného priemyslu. Nositeľom týchto zmien je digitalizácia výroby a optimalizácia všetkých podnikových procesov v ...

ITPro

Vývoj aplikácií UWP pre Xbox One II.

09.11.2016 14:47

V predošlej časti sme ukázali postup, ako si ­vytvoriť vývojársky účet a aktivovať vývojársky režim na hernej konzole Xbox One, aby ste mohli testovať svoje aplikácie. Výhodou hernej konzoly Xbox je v ...

Žiadne komentáre

Vyhľadávanie

Kyocera - prve-zariadenia-formatu-a4-s-vykonom-a3

Najnovšie videá