You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android中如何避免多次点击导航栏链接重复创建Activity实例?

嘿,这个场景我太熟了!要解决每次点击都新建Photos Activity的问题,让它只创建一次并复用,有两种实用的方法,我给你拆解清楚:

方法1:在AndroidManifest.xml中配置启动模式

直接给Photos Activity设置特定的启动模式,从根源控制实例数量:

  • 如果你希望整个任务栈里永远只有一个Photos实例(不管它在栈的哪个位置,点击都能把它调到栈顶复用),就用singleTask模式:
    在AndroidManifest.xml里修改Photos的配置:
    <activity
        android:name=".Photos"
        android:launchMode="singleTask" />
    
  • 如果你只需要当Photos已经在栈顶时才复用(如果它被其他Activity压在下面,还是会新建),就用singleTop模式,把上面的singleTask换成singleTop就行。
方法2:给Intent添加启动标记(更灵活)

如果不想修改全局的Manifest配置,也可以在启动Intent的时候加个标记,临时控制复用逻辑:
比如用FLAG_ACTIVITY_REORDER_TO_FRONT,这个标记会自动找到已存在的Photos实例,把它调到栈顶并复用,完全符合你的需求:

Intent photosIntent = new Intent(Videos.this, Photos.class);
// 添加标记,复用已存在的实例
photosIntent.addFlags(Intent.FLAG_ACTIVITY_REORDER_TO_FRONT);
Videos.this.startActivity(photosIntent);

额外提示:复用后刷新数据

如果复用Photos的时候需要更新内容(比如加载新数据),可以在Photos Activity里重写onNewIntent()方法,在这里处理刷新逻辑:

@Override
protected void onNewIntent(Intent intent) {
    super.onNewIntent(intent);
    // 这里可以更新UI、重新加载数据
    setIntent(intent); // 可选,把新的Intent替换掉旧的,方便后续获取数据
}

内容的提问来源于stack exchange,提问作者Mostafa Daif

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 08:28:57