ユーザーが戻るボタンを繰り返し押す場合、タスク/アプリの最後のアクティビティがいつ行われたかを検出し、「終了しますか?」と表示する方法が必要です。ホーム画面または以前に実行していたアプリに戻る前のダイアログ。
フックするのは簡単onkeypressed()
ですが、これがタスクの「最後の」アクティビティであることをどのように理解できますか?
ユーザーが戻るボタンを繰り返し押す場合、タスク/アプリの最後のアクティビティがいつ行われたかを検出し、「終了しますか?」と表示する方法が必要です。ホーム画面または以前に実行していたアプリに戻る前のダイアログ。
フックするのは簡単onkeypressed()
ですが、これがタスクの「最後の」アクティビティであることをどのように理解できますか?
アクティビティでこのようなsmthを使用して、それが最後のものであるかどうかを確認できると思います。
private boolean isLastActivity() {
final ActivityManager am = (ActivityManager) getSystemService(Context.ACTIVITY_SERVICE);
final List<RunningTaskInfo> tasksInfo = am.getRunningTasks(1024);
final String ourAppPackageName = getPackageName();
RunningTaskInfo taskInfo;
final int size = tasksInfo.size();
for (int i = 0; i < size; i++) {
taskInfo = tasksInfo.get(i);
if (ourAppPackageName.equals(taskInfo.baseActivity.getPackageName())) {
return taskInfo.numActivities == 1;
}
}
return false;
}
これには、AndroidManifest.xmlに権限を追加する必要もあります。
<uses-permission android:name="android.permission.GET_TASKS" />
したがって、アクティビティでは、次を使用できます。
public void onBackPressed() {
if (isLastActivity()) {
showDialog(DIALOG_EXIT_CONFIRMATION_ID);
} else {
super.onBackPressed(); // this will actually finish the Activity
}
}
次に、youd Dialogでボタンをクリックして、Activity.finish()を呼び出します。
Androidアプリケーションの基礎を確認してください。これは、Androidアプリケーションのプロモートされた動作に違反します。
ユーザーがBACKキーを押しても、画面にはユーザーが残したばかりのアクティビティ(前のタスクのルートアクティビティ)は表示されません。むしろ、スタックの最上位のアクティビティが削除され、同じタスクの前のアクティビティが表示されます。
アファイク、ありません。
履歴スタックに影響を与えるために使用できるフラグがいくつかありますが、すべてアプリケーション内にあります。あなたの意図でこのフラグを試してください:
FLAG_ACTIVITY_LAUNCHED_FROM_HISTORY