ti-enxame.com

Execute um pedaço de código apenas uma vez quando um aplicativo estiver instalado

Quero executar um pedaço de código apenas uma vez no meu aplicativo e é quando o executo pela primeira vez (aplicativo recém-instalado). Como eu poderia fazer isso, alguém pode explicar dando um pedaço de código.

Na verdade, no meu projeto Android, eu quero criar um banco de dados e inserir alguns valores apenas na primeira execução. Depois disso, esse pedaço de código específico não deve ser executado novamente. Como obter esse mecanismo através de SharedPreferences ou Preferências.

Código de exemplo será mais útil.

27
Chintan Soni

Antes de tudo, você pode usar SQLiteOpenHelper . É a maneira preferida de fazer as coisas com o banco de dados. Essa classe possui um método onCreate(SQLiteDatabase), chamado ao criar o banco de dados pela primeira vez. Eu acho que combina bem com você.

Se você quiser mais flexibilidade e sua lógica inicial não estiver vinculada apenas ao banco de dados, poderá usar a amostra fornecida anteriormente. Você só precisa colocá-lo no local de inicialização.

Existem 2 pontos de inicialização. Se você tiver apenas uma atividade, poderá colocar seu código no método onCreate, para que fique assim:

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ão esqueça de colocar declaração de atividade no manifesto , assim como é intentfilters (action = MAIN, categoria = LAUNCHER).

Se você possui mais de uma atividade e não deseja duplicar sua lógica de inicialização, basta colocar sua lógica de inicialização na instância do Aplicativo, criada antes de todas as atividades (e outros componentes, como serviços, receptores de transmissão, provedores de conteúdo) .

Basta criar uma classe assim:

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();
    }
}

Tudo o que você precisa para isso funcionar é colocado na tag application no atributo AndroidManifest.xml Android: name = ". App".

<!-- other xml stuff -->

<application ... Android:name=".App">

   <!-- yet another stuff like nextline -->
   <activity ... />
</application>
38
pepyakin

Você poderia tentar :

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();
}

Escreva isso em sua primeira atividade em create. Depois, o código não será executado novamente.

14
Sanober Malik

aqui está o que eu faço nessas situações:

    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 
    }

espero que isto ajude

4
Driss Bounouar

Onde você precisar executar esse código no seu aplicativo:

  1. Verifique se firstTime booleano é True nas preferências compartilhadas
  2. Se não

    • Execute o código único
    • Salve firstTime como verdadeiro nas preferências compartilhadas

Algo assim:

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();
}
4
Anup Cowkur