Exécutez un morceau de code seulement une fois quand une application est installée [dupliquer]
cette question a déjà une réponse ici:
- lancer le code une seule fois après qu'une application est installée sur un appareil Android 4 réponses
je veux lancer un morceau de code une seule fois dans mon application et c'est quand je l'exécute pour la première fois (application nouvellement installée). Comment pouvais-je faire ceci, quelqu'un peut expliquer donner un morceau de code.
en fait, dans mon projet android je veux créer une base de données et insérer quelques valeurs sur la première exécution seulement. Après cela, ce morceau particulier de code ne devrait plus fonctionner. Comment réaliser ce mécanisme à travers SharedPreferences ou Preferences .
Exemple de code sera plus utile.
4 réponses
devant tout ce que vous pouvez utiliser SQLiteOpenHelper . Il est préférable de faire des choses avec la base de données. Cette classe a une méthode onCreate(SQLiteDatabase)
, appelée lors de la création de la base de données. Je pense que vous vous y sentez bien.
si vous voulez plus de flexibilité et votre première logique de temps n'est pas liée seulement avec la base de données, vous pouvez utiliser l'échantillon fourni plus tôt. Vous avez juste besoin de le mettre dans la place de démarrage.
il y a 2 spots de démarrage. Si vous avez seulement une seule activité, vous pouvez mettre votre code dans la méthode onCreate
, donc ce sera comme ceci:
public void onCreate(Bundle savedInstanceState) {
// don't forget to call super method.
super.onCreate(savedInstanceState);
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
if (!prefs.getBoolean("firstTime", false)) {
// <---- run your one time code here
databaseSetup();
// mark first time has ran.
SharedPreferences.Editor editor = prefs.edit();
editor.putBoolean("firstTime", true);
editor.commit();
}
}
n'oubliez pas de mettre déclaration d'activité dans le manifeste , ainsi que intentfilters (action = MAIN
, catégorie = LAUNCHER
).
Si vous avez plus d'une activité et vous ne voulez pas dupliquer votre démarrage logique, vous pouvez simplement mettre votre logique d'initialisation dans Application instance, qui est créée avant toutes les activités (et d'autres composants, tels que les services, les récepteurs de radiodiffusion, les fournisseurs de contenu).
il suffit de créer une classe comme celle-ci:
public class App extends Application {
@Override
public void onCreate() {
super.onCreate();
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
if (!prefs.getBoolean("firstTime", false)) {
// <---- run your one time code here
databaseSetup();
// mark first time has ran.
SharedPreferences.Editor editor = prefs.edit();
editor.putBoolean("firstTime", true);
editor.commit();
}
}
Tout ce dont vous avez besoin pour que cela fonctionne, est mis dans application
étiquette dans AndroidManifest.attribut XML android: name=".App."
<!-- other xml stuff -->
<application ... android:name=".App">
<!-- yet another stuff like nextline -->
<activity ... />
</application>
Vous pouvez essayer :
SharedPreferences wmbPreference = PreferenceManager.getDefaultSharedPreferences(this);
boolean isFirstRun = wmbPreference.getBoolean("FIRSTRUN", true);
if (isFirstRun)
{
// Code to run once
SharedPreferences.Editor editor = wmbPreference.edit();
editor.putBoolean("FIRSTRUN", false);
editor.commit();
}
écrivez ceci dans votre première activité sur create. Puis après le code ne s'exécutera plus.
partout où vous devez exécuter ce code dans votre application:
- vérifier si le booléen
firstTime
est vrai dans les préférences partagées -
Si ce n'est
- Exécuter le code
- Enregistrer
firstTime
aussi vrai dans les préférences partagées
quelque chose comme ça:
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
if(!prefs.getBoolean("firstTime", false)) {
// run your one time code here
SharedPreferences.Editor editor = prefs.edit();
editor.putBoolean("firstTime", true);
editor.commit();
}
voici ce que je fais dans ces situations:
wmbPreference = PreferenceManager.getDefaultSharedPreferences(this);
isFirstRun = wmbPreference.getBoolean("FIRSTRUN", true);
if (isFirstRun)
{
// Do your magic here
SharedPreferences.Editor editor = wmbPreference.edit();
editor.putBoolean("FIRSTRUN", false);
editor.commit();
}else{
//what you do everytime goes here
}
espérons que cette aide