Portál AbcLinuxu, 30. dubna 2025 13:27
Nová verze přináší mnohem flexibilnější možnosti nastavení. Snažil jsem se nevytvořit Černobyl, ale moc daleko od jaderné elektrárny nejsem. Možná tak jedna dvě iterace Popis, obrázky a video výukové matematické hry jsou v mém blogu. Prosím o pomoc s testováním, zvláště na dětech. Další verze už bude mít více herních prvků pro udržení zájmu.
Pro fajnšmekry mám zase ukázku kódu. Řešil jsem, co udělat s nekompatibilním nastavením. Nechtěl jsem spoléhat, že aplikace třeba nespadne, proto jsem si napsal kód, kde upgrady řídím. Jak? Napsal jsem třídu, která dědí z Application a zaregistroval jsem ji v manifestu.
<application
android:name=".helpers.LeliMathApp"
Třída volá v metodě onCreate() novou metodu zodpovědnou za upgrade. Pokusí se z preferencí stáhnout číslo verze, se kterou byla aplikace minule spuštěna. Pokud se liší, zapíše aktuální verzi do preferencí a skončí. V opačném případě provede upgrade. V mém případě jednoduše smaže nepoužívané preference. Koncept se dá použít i pro upgrade databáze.
public class LeliMathApp extends Application { public void onCreate() { super.onCreate(); performUpgrade(); } private void performUpgrade() { try { PackageInfo packageInfo = this.getPackageManager().getPackageInfo(this.getPackageName(), 0); log.info("Started version " + packageInfo.versionCode); SharedPreferences preferences = PreferenceManager.getDefaultSharedPreferences(this); SharedPreferences.Editor editor = preferences.edit(); int version = preferences.getInt(GamePreferenceActivity.KEY_CURRENT_VERSION, 0); if (version == 0 || version < packageInfo.versionCode) { editor.putInt(GamePreferenceActivity.KEY_CURRENT_VERSION, packageInfo.versionCode); editor.apply(); return; // new installation } if (version <= 141) { log.info("Removing deprecated preferences from version 1.4.1 and older"); editor.remove("pref_game_operations"); editor.remove("pref_game_first_operand"); editor.remove("pref_game_second_operand"); editor.remove("pref_game_result"); } } catch (PackageManager.NameNotFoundException e) { log.warn("Package search failed!", e); } } }
Tiskni
Sdílej:
....mno to neviem ci je uplne na pochvalu:)
D.
Nechci mít doma Sheldona.A ted se naprosto vazne zeptam... Proc ne?
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.