2013-11-26 8 views
14

私のアプリケーションは以下のフローを有するどのようにすべての活動を終了し、アンドロイドでアプリケーションを閉じるには?

ホーム - >画面1-> 2-画面>画面3->画面4->画面5>ホーム - >画面2->ホーム - >画面3

私の問題は、アプリケーションを終了しようとしているときにホームアクティビティが毎回開くことです。

ユーザーがホーム画面でデバイスの戻るキーを押したときに、アプリケーションを閉じるだけです。

+0

これを参照してください:http://stackoverflow.com/questions/4758462/android-finish-all-activities – Avijit

答えて

52

が現在の活動を終了しますfinishAffinity()メソッドとすべての親の活動があるが、それは唯一のAndroid 4.1で動作以上

+2

それは命を救う人だった...! – GAMA

0

アクティビティマニフェストファイルにandroid:noHistory="true"を追加します。

+0

私は彼が戻るときに前の画面に戻ると思っていますが、ホーム画面。 –

0

1あなたの問題を解決するための2通りの方法があります)コール仕上げ()すべての活動

2)でstartActivity(意図)アンドロイドを設定した後:launchMode =「singleInstance」をmenifestファイル内のすべてのタグに

iは第二の方法は、問題を解決するための最良のだと思いますが、あなたはまた、最初の方法を使用することができます

2

でスクリーン3を起動してみてくださいすることができます。 閉じる以前のすべての活動を次のように

Intent intent = new Intent(this, HomeActivity.class); 
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); // this will clear all the stack 
intent.putExtra("Exit me", true); 
startActivity(intent); 
finish(); 

を次にHomeActivityのonCreate()メソッドではこれが私のためによく働くMainActivity

setContentView(R.layout.main_layout); 

if(getIntent().getBooleanExtra("Exit me", false)){ 
    finish(); 
    return; // add this to prevent from doing unnecessary stuffs 
} 
10

を完了するためにこれを追加します。

  • あなたはFLAG_ACTIVITY_CLEAR_TASKFLAG_ACTIVITY_NEW_TASKフラグを使用する必要があります。

    Intent intent = new Intent(SecondActivity.this, CloseActivity.class); 
    //Clear all activities and start new task 
    intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK); 
    startActivity(intent); 
    
  • onCreate()CloseActivity活動の方法。

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
        super.onCreate(savedInstanceState); 
        finish(); // Exit 
    } 
    
+0

intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK);私のために働いた。 –

0
public void onBackPressed() { 
    super.onBackPressed(); 
    finishAffinity(); 
    System.exit(0); 
} 

この方法を用いることができるすべての活性およびクリーンデバイスメモリを閉鎖するためのより良い使用です。

Intent intent = new Intent(getApplicationContext(), YourActivity.class); 
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK); 
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK); 
startActivity(intent); 
0

使用

System.exit(0); 

アノテーションなしでアプリを終了します。

0

はいつかfinish()私は

finishAffinity()

でその問題を解決した

を働いていないしないでください。そして、次の手順を実行し、新しいものを開いている間にすべての活動をクリアする

関連する問題