8

私のアプリでは、最初の実行時にのみスプラッシュ画面を 1 回実行したいと考えていますが、問題は、Manifestこの行に既に配置されていることです。 android:noHistory="true"[戻る] ボタンを押してアプリを終了するとうまく機能しますが、アプリがまだ残っていることに注意してくださいバックグラウンドで実行され、アプリのアイコンを押すと、スプラッシュ画面に戻り、登録ページに戻ります。アプリケーションを再度開いたときに、登録ページに直接リダイレクトされるようにしたかったのです。

どうすればいいですか?ご提案いただきありがとうございます。

4

5 に答える 5

3

共有設定を使用して、最初の起動時にアプリを実行するときにブール値を保存し、起動するたびにその値を確認してから、登録アクティビティを直接開始できます。

ただし、通常の値を保存するだけのこのアプローチには抜け穴があり、アプリがユーザー デバイスにインストールされていて、ユーザーが最初のバージョンをアンインストールせずに新しいバージョンでアプリを更新したとします。その場合、スプラッシュも表示されません。古い共有設定は、その古い保存された値で既にそこにあるためです。

その場合は、アプリのバージョンを保存してロジックを少し変更し、起動するたびにアプリのバージョンを確認して、実際のユーザー エクスペリエンスを生成できるようにする必要があります。

これを見てください:Android設定を使用して1回限りのウェルカム画面を作成する方法?

于 2013-09-04T11:51:51.753 に答える
3

「共有設定」について詳しく説明すると、メインアクティビティの onCreate() に挿入すると、次のように機能すると思います。

    SharedPreferences settings = this.getSharedPreferences("appInfo", 0);
    boolean firstTime = settings.getBoolean("first_time", true);
    if (firstTime) {
        SharedPreferences.Editor editor = settings.edit();
        editor.putBoolean("first_time", false);
        editor.commit();
    }

ブロックが実行された後、「firstTime」はアプリが初めて実行されたかどうかを示す必要があります。「appInfo」は、設定ファイルに名前を付けたいもののプレースホルダー名にすぎないと思います。

于 2013-09-04T11:52:31.897 に答える
2

だから、SplashActivity(onCreate) で私がしたことは次のとおりです。

    SharedPreferences settings = getSharedPreferences("prefs", 0);
    SharedPreferences.Editor editor = settings.edit();
    editor.putBoolean("firstRun", true);
    editor.commit();

    Intent intent = new Intent(this, RegistrationActivity.class);
    startActivity(intent);

SplashActivity(onResume):

@Override
public void onResume() {
    super.onResume();
    SharedPreferences settings = getSharedPreferences("prefs", 0);
    boolean firstRun = settings.getBoolean("firstRun", true);
    if (!firstRun) {
        Intent intent = new Intent(this, RegistrationActivity.class);
            startActivity(intent);
        Log.d("TAG1", "firstRun(false): " + Boolean.valueOf(firstRun).toString());
    } else {
        Log.d("TAG1", "firstRun(true): " + Boolean.valueOf(firstRun).toString());
    }
}

私のRegistrationActivity(onCreate)では:

    SharedPreferences settings = getSharedPreferences("prefs", 0);
    SharedPreferences.Editor editor = settings.edit();
    editor.putBoolean("firstRun", false);
    editor.commit();

    boolean firstRun = settings.getBoolean("firstRun", true);
    Log.d("TAG1", "firstRun: " + Boolean.valueOf(firstRun).toString());

次に、ユーザーがホームを押さない限り戻ることを防ぐために、戻るボタンを無効にします。

@Override
public void onBackPressed() {
}

貢献してくれた人々に感謝します!

于 2013-09-05T10:11:24.783 に答える
0

最も簡単な方法は、マニフェスト ファイルでandroid:noHistory="true"を使用できることです。

于 2016-06-14T08:04:33.527 に答える