2017-05-19 4 views
2

私はアンドロイドの開発で新しく、私が理解していないライフサイクルの活動について、特に私が取り組んでいる次のアプリケーションの例では何かがあります。破壊活動の仕組みは?

私のアプリでは、ログインアクティビティとメインアクティビティがあります。私のログインアクティビティで

  1. 、成功した試みで、主な活動を開始する意図、そしてフィニッシュ()ログインアクティビティがあります。
    ==>ログイン操作が破棄されているので、再度表示されません。私のメインの活動で

    Intent intent = new Intent(this, MainActivity.class); 
    intent.putExtra("authentResult", tokenDto); 
    startActivity(intent); 
    finish(); //destroy activity to not open it with back button` 
    
  2. 、私は(新しい?)ログイン活動を開始する意向を作成する切断ボタンを持っています。
    ==>そこまで、すべて正常であり、ログインアクティビティが表示されます。

    Intent loginActivity = new Intent(this, LoginActivity.class); 
    

    startActivity(loginActivity);

  3. ログインアクティビティでは、[戻る]ボタンを使用してアプリを終了する必要があります。
    これを行うには、特別なフラグを持つインテントをメインアクティビティに送信して終了します(バックボタンはメインアクティビティを起動しません)。その後、ログインアクティビティを終了します。 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(); 
     } 

誰もが私が欠けているものを私に説明、または私に直接アプリを閉じるためのより良い方法を示すことができますか?

明確でないものがある場合は、私に電話してください。

+0

これらのアクティビティの開始/終了に使用するコードがあり、そのアクティビティのどの時点でそれを呼び出すかを指定することもできます。 – njzk2

+0

投稿にコードを追加しました – Ludo

+0

理由がわかりません新しいLoginActivityが表示されます。しかし、ログインを開始するときに 'MainActivity'で' startActivityForResult'を使うことをお勧めします。その場合、MainActivityで 'onActivityResult'を使うことができます。' if(resultCode == RESULT_CANCELLED){finish();のようにしてください。 } 'を実行し、ユーザが正常にログインしたときにLoginActivityの' setResult'を使って結果を変更します。 – njzk2

答えて

0

マニフェストのメインアクティビティとしてログインアクティビティを宣言した場合、2番目のアクティビティを起動したときにそのアクティビティを破棄しないと、戻るボタンは追加のコードなしですべてを行い、ログインアクティビティのバックキー

Androidアプリケーションでは、アプリケーションをいつ終了/終了するかを決定するシステムです。

+0

はい私はそれについて考えました。 しかし、私はそれを破壊した場合、この最後のログインアクティビティがどのように存在する可能性があるのか​​まだ分かりません...スタックを外していないアクティビティを破棄しますか? – Ludo

+0

単にそれを破壊しないでください。もしそれが隠されていて、システムがそれを破壊するリソースを回復する必要があるなら、これはAndroidの仕組みです。 –

+0

OK、私はそうしました。それはうまくいきます。 また、ログインは実際にエントリポイントであるため、より論理的なようです。 @ njzk2とTonteria24:あなたの時間と答えをありがとう! – Ludo