私のアプリケーションは以下のフローを有するどのようにすべての活動を終了し、アンドロイドでアプリケーションを閉じるには?
ホーム - >画面1-> 2-画面>画面3->画面4->画面5>ホーム - >画面2->ホーム - >画面3
私の問題は、アプリケーションを終了しようとしているときにホームアクティビティが毎回開くことです。
ユーザーがホーム画面でデバイスの戻るキーを押したときに、アプリケーションを閉じるだけです。
私のアプリケーションは以下のフローを有するどのようにすべての活動を終了し、アンドロイドでアプリケーションを閉じるには?
ホーム - >画面1-> 2-画面>画面3->画面4->画面5>ホーム - >画面2->ホーム - >画面3
私の問題は、アプリケーションを終了しようとしているときにホームアクティビティが毎回開くことです。
ユーザーがホーム画面でデバイスの戻るキーを押したときに、アプリケーションを閉じるだけです。
アクティビティマニフェストファイルにandroid:noHistory="true"
を追加します。
私は彼が戻るときに前の画面に戻ると思っていますが、ホーム画面。 –
1あなたの問題を解決するための2通りの方法があります)コール仕上げ()すべての活動
2)でstartActivity(意図)アンドロイドを設定した後:launchMode =「singleInstance」をmenifestファイル内のすべてのタグに
iは第二の方法は、問題を解決するための最良のだと思いますが、あなたはまた、最初の方法を使用することができます
あなたは、これはすべてのバージョンで私のためによく働くIntent.FLAG_ACTIVITY_CLEAR_TASK http://developer.android.com/reference/android/content/Intent.html#FLAG_ACTIVITY_CLEAR_TASK
でスクリーン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
}
を完了するためにこれを追加します。
あなたはFLAG_ACTIVITY_CLEAR_TASK
とFLAG_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
}
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TASK | Intent.FLAG_ACTIVITY_NEW_TASK);私のために働いた。 –
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);
使用
System.exit(0);
アノテーションなしでアプリを終了します。
はいつかfinish()
私は
finishAffinity()
でその問題を解決した
を働いていないしないでください。そして、次の手順を実行し、新しいものを開いている間にすべての活動をクリアする
これを参照してください:http://stackoverflow.com/questions/4758462/android-finish-all-activities – Avijit