私はアンドロイドの開発で新しく、私が理解していないライフサイクルの活動について、特に私が取り組んでいる次のアプリケーションの例では何かがあります。破壊活動の仕組みは?
私のアプリでは、ログインアクティビティとメインアクティビティがあります。私のログインアクティビティで
、成功した試みで、主な活動を開始する意図、そしてフィニッシュ()ログインアクティビティがあります。
==>ログイン操作が破棄されているので、再度表示されません。私のメインの活動でIntent intent = new Intent(this, MainActivity.class); intent.putExtra("authentResult", tokenDto); startActivity(intent); finish(); //destroy activity to not open it with back button`
、私は(新しい?)ログイン活動を開始する意向を作成する切断ボタンを持っています。
==>そこまで、すべて正常であり、ログインアクティビティが表示されます。Intent loginActivity = new Intent(this, LoginActivity.class);
startActivity(loginActivity);
ログインアクティビティでは、[戻る]ボタンを使用してアプリを終了する必要があります。
これを行うには、特別なフラグを持つインテントをメインアクティビティに送信して終了します(バックボタンはメインアクティビティを起動しません)。その後、ログインアクティビティを終了します。 onDestroyメソッドが呼び出され、ログインウィンドウが閉じます。
==>ここから、私はそのアプリケーションが閉じられると思っています。しかし、「新しい」ログイン活動が現れ、そして私はそれが最初のポイントの活動になると思われるので、私はそこに失わ少しだ...中のonCreateでpublic void onBackPressed() { Log.d(TAG, "BACK PRESSED - loginActivity"); //Finish MainActivity Intent intent = new Intent(getApplicationContext(), MainActivity.class); intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); intent.putExtra("EXIT", true); startActivity(intent); finish(); // finish login activity }
mainActivityは、私はこれで始まる:
if (getIntent().getBooleanExtra("EXIT", false)) {
finish();
}
誰もが私が欠けているものを私に説明、または私に直接アプリを閉じるためのより良い方法を示すことができますか?
明確でないものがある場合は、私に電話してください。
これらのアクティビティの開始/終了に使用するコードがあり、そのアクティビティのどの時点でそれを呼び出すかを指定することもできます。 – njzk2
投稿にコードを追加しました – Ludo
理由がわかりません新しいLoginActivityが表示されます。しかし、ログインを開始するときに 'MainActivity'で' startActivityForResult'を使うことをお勧めします。その場合、MainActivityで 'onActivityResult'を使うことができます。' if(resultCode == RESULT_CANCELLED){finish();のようにしてください。 } 'を実行し、ユーザが正常にログインしたときにLoginActivityの' setResult'を使って結果を変更します。 – njzk2