0

アプリに 1 回限りの EULA とパスワード作成画面を実装しようとしています。

私はこれをできるだけクリーンでシームレスにするよう努めています。私の現在の実装には、設定する必要がある SharedPreference が含まれています。設定されていない場合は、EULA とパスワード作成画面が表示されます。

/**
 * 
 * @param context
 * @return
 */
public static boolean isFirstLaunch(Context context) {
    SharedPreferences reader = context.getSharedPreferences(
            PREFERENCES, Context.MODE_PRIVATE);
    String apiKey = reader.getString(APIKEY, "");

    return apiKey == "";
}

ユーザーが EULA への同意を完了し、パスワードを作成すると、API キーが設定されます。ただし、以前のアクティビティがまだ起動/アニメーション化されていることがわかります。そのため、最初のアクティビティでアニメーションを削除しようとしましたが、まだ運がありません。

アクティビティでは:

@Override
protected void onCreate(Bundle arg0) {
    super.onCreate(arg0);

    if (InitialLoading.isFirstLaunch(this)) {
        Intent intent = new Intent(this, EndUserAgreementActivity.class);
        intent.addFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
        startActivity(intent);
        //getWindow().setWindowAnimations(0);
        overridePendingTransition(0,0);
        finish();

        return;
    }

    if (InitialLoading.isPasswordLoginEnabled(this)) {



    }

    Intent intent = new Intent(this, OverviewActivity.class);
    intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP|Intent.FLAG_ACTIVITY_NEW_TASK|Intent.FLAG_ACTIVITY_NO_HISTORY|Intent.FLAG_ACTIVITY_CLEAR_TASK|Intent.FLAG_ACTIVITY_NO_ANIMATION);
    startActivity(intent);
    finish();
}

すべてのシナリオで 1 つのアクティビティのみが開始されたかのように見せる方法を知っていますか?

  • (表示しないでください)起動されたアクティビティ -> EULA -> パスワードの作成 -> 起動された/その他のアクティビティ
  • (表示しないでください)起動されたアクティビティ -> 認証画面 -> 起動された/その他のアクティビティ
  • 開始された活動

現在、EULA を起動しようとすると、以前のアクティビティのちらつきが表示されます。Whatsapp を確認したところ、EULA 以外のアクティビティを起動するとそのアプリがちらつきます。これが可能かどうか疑問に思います。

認証オプションが有効になっている場合に起動するパスワード画面を無効にする設定画面が既にあるので、心配する必要はありません。

とにかく、助けてくれてありがとう。

4

1 に答える 1

1

あなたが見ているかもしれないのはFragmentsの概念です。アイデアは、アクティビティの UI を実行時に交換できる再利用可能なフラグメントに分割することです。

したがって、onCreateメソッドでは、EULA 画面が必要かどうかを確認してから、対応する EULA フラグメントを膨らませるか、またはパスワード ui フラグメントを表示することができます。これにより、アクティブなアクティビティを再利用するために新しいアクティビティを開始することを回避することで、ちらつきを減らすことができます。

于 2014-08-29T09:06:12.630 に答える