如何在 Android 中完成堆栈上的最后 N 个活动?

How to finish last N activites on stack in Android?

我有 4 个活动:

A->B->C->D

当我从 C 转到 D 时,我想完成 B 和 C,这样当我按下后退按钮时,activity A 会恢复。有没有简单的方法可以做到这一点?

使用Intent.FLAG_ACTIVITY_CLEAR_TASK 将目标activity 设置为新根。此标志应与 FLAG_ACTIVITY_NEW_TASK

结合使用
class ActivityD : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_d)
    }

    override fun onBackPressed() {
        Intent(this, ActivityA::class.java).apply {
            flags = Intent.FLAG_ACTIVITY_NEW_TASK or Intent.FLAG_ACTIVITY_CLEAR_TASK
            startActivity(this)
        }
    }
}

您可以使用以下 adb 命令查看 activity 任务 (unix shell)

adb shell dumpsys activity activities | sed -En -e '/Stack #/p' -e '/Running activities/,/Run #0/p'