ユーザーがインテントの戻るボタンを押すと、アプリケーションは終了します。戻るボタンが押されたときにアプリケーションを確実に終了するにはどうすればよいですか?
startActivity
を使用して新しいアクティビティを開始した直後に、finish()
を呼び出して、現在のアクティビティが新しいアクティビティの背後にスタックされないようにしてください。
[〜#〜] edit [〜#〜]コメントに関して:
あなたが提案しているのは、特にAndroidアプリフローが通常どのように機能するか、そしてユーザーがどのように機能することを期待するかです。あなたがcan本当にしたい場合は、そのアクティビティに至るすべてのstartActivity
がstartActivityForResult
であり、終了コードをチェックするonActivityResult
リスナーを持っていることを確認することです。 詳細はこちら 。基本的に、アクティビティを終了する前にsetResult
を使用して、選択した終了コードを設定し、親アクティビティがその終了を受信した場合コード、thatアクティビティで設定し、そのアクティビティを終了するなど.
私のホームアクティビティでは、「onBackPressed」を次のようにオーバーライドします。
@Override
public void onBackPressed() {
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_HOME);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
}
そのため、ユーザーがホームアクティビティに戻って押すと、ホーム画面に移動します。
プログラムでホーム画面に移動する からコードを取得しました
ユーザーエクスペリエンスの向上:
/**
* Back button listener.
* Will close the application if the back button pressed twice.
*/
@Override
public void onBackPressed()
{
if(backButtonCount >= 1)
{
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_HOME);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
}
else
{
Toast.makeText(this, "Press the back button once again to close the application.", Toast.LENGTH_SHORT).show();
backButtonCount++;
}
}
ユーザーがホームボタンを押していないのはなぜですか?その後、特定のアクティビティだけでなく、アクティビティからアプリを終了できます。
あなたのアプリケーションがバックグラウンドで何かを続けることを心配している場合。関連するonPauseおよびonStopコマンド(ユーザーがHomeを押すとトリガーされます)で必ず停止してください。
次回ユーザーがアプリをクリックして最初からやり直したいという問題がある場合は、ユーザーをアプリの開始アクティビティに戻すための何らかのメニュー項目またはUIボタンを画面に配置することをお勧めしますアプリ。公式TwitterアプリのTwitterの鳥など.
アプリは、バックスタックにアクティビティがない場合にのみ終了します。 SOマニフェストにこの行を追加しますAndroid:noHistory = "true"バックスタックしたくないすべてのアクティビティに追加します。その後、アプリ呼び出しを閉じますOnBackPressedのfinish()
<activity Android:name=".activities.DemoActivity"
Android:screenOrientation="portrait"
**Android:noHistory="true"**
/>
onBackPressed
methodを使用
@Override
public void onBackPressed() {
finish();
super.onBackPressed();
}
これで問題が解決します。
Androidアプリから終了するには、単にメインアクティビティで使用します。または、Androidマニフェストファイルを使用して設定します。
Android:noHistory="true"
まず、Androidは、戻るボタン内で行うことをお勧めしませんが、提供されているライフサイクルメソッドを使用することをお勧めします。戻るボタンはアクティビティを破棄しないでください。
UIスタックの最後の残りのアクティビティで戻るボタンを押すと、概要(5.0でマテリアルデザインが導入されたため、四角ボタン)からアクセスできるアクティビティがスタックに追加されます。ユーザーがアプリを閉じたい場合は、[概要]メニューからアプリをスワイプ(閉じる)する必要があります。
OnPause()、onStop()、およびonDestroy()のライフサイクルメソッドで、実行したくないバックグラウンドタスクとジョブを停止するのはアプリの責任です。ライフサイクルとその適切な実装の詳細については、こちらをご覧ください: http://developer.Android.com/training/basics/activity-lifecycle/stopping.html
しかし、あなたの質問に答えるには、hacksを実行して正確な動作を実装することができますしかし、私が言ったように、それは推奨されません:
@Override
public void onBackPressed() {
// make sure you have this outcommented
// super.onBackPressed();
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_HOME);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
}
メソッドfinish() onBack method of your current_activity
を使用してcurrent_activityを終了します
次に、force_closeを削除するためのcurrent_activityのonDestroyに以下の行を追加します
@Override
public void onDestroy()
{
Android.os.Process.killProcess(Android.os.Process.myPid());
super.onDestroy();
}
@Vlad_Spaysの回答を変更して、スタックの最後のアイテムでない限り、戻るボタンが正常に機能するようにし、アプリを終了する前にユーザーにプロンプトを表示します。
@Override
public void onBackPressed(){
if (isTaskRoot()){
if (backButtonCount >= 1){
Intent intent = new Intent(Intent.ACTION_MAIN);
intent.addCategory(Intent.CATEGORY_HOME);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
}else{
Toast.makeText(this, "Press the back button once again to close the application.", Toast.LENGTH_SHORT).show();
backButtonCount++;
}
}else{
super.onBackPressed();
}
}