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

Android 主Activity按返回键重启需二次点击才能退出问题求助

Android主界面点击一次返回键直接退出应用解决方案

问题原因

你当前跳转逻辑里登录页、闪屏页虽然都调用了finish(),但大概率存在以下异常情况导致任务栈内残留多余Activity实例/重复创建了主界面实例:

  1. 闪屏页类名拼写错误(代码中定义为Loadin_Screen,引用时写为Loading_Screen)可能导致跳转逻辑异常
  2. 任务栈没有正确清空,残留了无效的页面实例

修复方案

方案1:启动主界面时清空任务栈(推荐)

修改闪屏页Loading_Screen中跳转到主界面的代码,添加Flag清空当前任务栈所有已有页面,确保任务栈内仅保留主界面实例:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_loading__screen);
    ButterKnife.bind(this);

    imgLoad.setImageResource(R.drawable.load);
    
    String username = getIntent().getStringExtra("name");
    new Handler().postDelayed(new Runnable() {
        @Override
        public void run() {
            Intent intent = new Intent(Loading_Screen.this,Account_List.class);
            intent.putExtra("name",username);
            // 新增下面这行,清空任务栈后启动主界面
            intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
            startActivity(intent);
            finish();
        }
    },SPLASH_SCREEN_TIME);
}

方案2:重写主界面返回逻辑

如果方案1不满足需求,可以直接在主界面Account_List中重写返回键逻辑,点击返回时直接关闭整个应用的所有页面:

public class Account_List extends AppCompatActivity {

    @BindView(R.id.txt)
    TextView txt;

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_account__list);
        ButterKnife.bind(this);
        String user = getIntent().getStringExtra("name");
        txt.setText("Hello "+user);
    }

    // 新增重写返回键方法
    @Override
    public void onBackPressed() {
        // 关闭当前任务栈所有Activity
        finishAffinity();
    }
}

额外注意事项

请先修正闪屏页的类名拼写错误,确保类名和引用时一致,避免编译错误或跳转异常。


内容的提问来源于stack exchange,提问作者Mohamed Hoosam

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 22:27:00