如果用户反复按下后退按钮,我需要一种方法来检测他们何时在我的任务/应用程序的最后一个活动中,并显示“是否要退出?”在返回主屏幕或之前运行的任何应用程序之前的对话框。
钩住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对话框中处理按钮单击以调用activity.finish()。

08-28 11:24