2

私のアプリを初めて実行するユーザーの登録を伴う活動をしたいと考えています。ユーザーがこの登録アクティビティを通過できないようにしたくありません。登録したくない場合は、アプリを閉じる必要があります。

に を格納することで、ユーザーが登録されているかどうかを確認できますがSharedPreferences、問題なく動作しているようです。これまでの MainActivity の内容:

public void onCreate(Bundle savedInstanceState) {
    if (needsRegistration()) {
        Intent intent = new Intent(this, RegistrationActivity.class);
        startActivity(intent);
    }

    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    ...
}

これには次の問題があります。

  • 登録活動をどこから開始すればよいかわからない (前か後super.onCreate(savedInstanceState)か?)
  • MainActivity はバックグラウンドで動作し続けているようで、エラーが発生します (ユーザーが登録されていないため)
  • ユーザーは戻るボタンを押して MainActivity に移動できます

これを行う適切な方法は何ですか?

4

1 に答える 1

2

登録アクティビティを開始する場所がわかりません (super.onCreate(savedInstanceState) の前または後?)

、などのsuper()関数を開くときは、最初の呼び出しとして呼び出しを行う必要があります。このようにして、関数は、関数の準備が整うために必要なすべてのことを実行できます。これは常に問題になるわけではありませんが、最初に電話をかける方が安全です。、などの終了関数は、データの保存などのクリーンアップを行った後に呼び出す必要があります。onCreate()onResume()super()onBackPressed()finish()super()

MainActivity はバックグラウンドで動作し続けているようで、エラーが発生します (ユーザーが登録されていないため)

ランチャーを作成し、ユーザーが登録されているかどうかを確認し、登録されている場合はRegistrationActivity登録コードを表示するか、この場合は何でも表示します。ActivityMainActivity

ユーザーは戻るボタンを押して MainActivity に移動できます

前のソリューションを参照してください。MainActivityが からのみ開始される場合、RegistrationActivityこれは問題になりません。

をチェックしSharedPreferencesてユーザーが登録されているかどうかを確認しても、大きな遅延は発生しないはずなので、そのlayoutために を作成する前にこれを行い、登録されている場合は にActivity進みます。MainActivity何らかの理由で大幅な遅延に気付いた場合は、スプラッシュ スクリーンを作成してロゴなどを表示し、登録済みかどうかを確認してから、登録またはメインに移動して適切なアクションを実行できますActivity

于 2013-09-20T22:47:08.483 に答える