web-dev-qa-db-ja.com

アプリケーションのインストール時に1回だけコードを実行する

アプリケーションでコードを1回だけ実行したいのですが、初めて実行するときになります(新しくインストールしたアプリ)。どうすればこれを行うことができますか、誰でもコードを提供することを説明できますか?.

実際、私のAndroidプロジェクトでは、データベースを作成し、最初の実行時にのみいくつかの値を挿入します。その後、その特定のコードは再び実行されるべきではありません。 SharedPreferencesまたはPreferences

サンプルコードの方が役立ちます。

27
Chintan Soni

すべての前に SQLiteOpenHelper を使用できます。データベースを使用することをお勧めします。このクラスには、データベースを最初に作成するときに呼び出されるonCreate(SQLiteDatabase)メソッドがあります。あなたにぴったりだと思います。

より柔軟性が必要で、初めてのロジックがデータベースのみに関連付けられていない場合は、以前に提供されたサンプルを使用できます。起動スポットに置くだけです。

2つのスタートアップスポットがあります。アクティビティが1つしかない場合は、コードをonCreateメソッドに配置できるため、次のようになります。

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

マニフェストのアクティビティ宣言 と、 intentfilters (action = MAIN、category = LAUNCHER)を忘れないでください。

複数のアクティビティがあり、スタートアップロジックを複製したくない場合は、すべてのアクティビティ(およびサービス、ブロードキャスト受信者、コンテンツプロバイダなどの他のコンポーネント)の前に作成されるApplicationインスタンスに初期化ロジックを置くだけです。 。

そのようなクラスを作成してください:

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

これが機能するために必要なのは、AndroidManifest.xml属性Android:name = "。App"のapplicationタグに入れられることです。

<!-- other xml stuff -->

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

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

あなたが試すことができます:

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

作成時の最初のアクティビティでこれを書いてください。その後、コードは再度実行されません。

14
Sanober Malik

これらの状況で私がすることは次のとおりです。

    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 
    }

お役に立てれば

4
Driss Bounouar

アプリでこのコードを実行する必要がある場所:

  1. 共有設定でブールfirstTimeがTrueかどうかを確認します
  2. そうでない場合

    • ワンタイムコードを実行する
    • 共有設定でfirstTimeをtrueとして保存します

このようなもの:

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