Skip to content
阅读进度

如何实现一个类似微信的“返回首页”功能,清空中间所有 Activity? ​

返回 Android 核心 目录

标准回答 ​

目标首页已在当前任务中时,可用 Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP 启动首页:清掉首页上方页面,并复用已有首页,通过 onNewIntent 接收参数。

**目标不存在或任务不同:**目标不存在会创建;跨任务时要额外确认任务选择。CLEAR_TASK + NEW_TASK 是清空目标任务后重新开始,不是返回现有首页的同一语义。

通俗例子 ​

A 首页、B 列表、C 详情中,从 C 返回 A,可结合 CLEAR_TOP 与 SINGLE_TOP,复用 A 并在 onNewIntent 处理新参数。

示例代码 ​

java
Intent intent = new Intent(this, HomeActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP
        | Intent.FLAG_ACTIVITY_SINGLE_TOP);
startActivity(intent);

易混淆点 ​

CLEAR_TASK 通常配合 NEW_TASK,是清空目标任务后重新开始,语义不同。

参考资料 ​

内容来源 ​

用完整回答理解机制,用真实证据解释项目。