アプリケーションでコードを1回だけ実行したいのですが、初めて実行するときになります(新しくインストールしたアプリ)。どうすればこれを行うことができますか、誰でもコードを提供することを説明できますか?.
実際、私のAndroidプロジェクトでは、データベースを作成し、最初の実行時にのみいくつかの値を挿入します。その後、その特定のコードは再び実行されるべきではありません。 SharedPreferencesまたはPreferences。
サンプルコードの方が役立ちます。
すべての前に 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>
あなたが試すことができます:
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();
}
作成時の最初のアクティビティでこれを書いてください。その後、コードは再度実行されません。
これらの状況で私がすることは次のとおりです。
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
}
お役に立てれば
アプリでこのコードを実行する必要がある場所:
firstTime
がTrueかどうかを確認しますそうでない場合
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();
}