Android 主Activity按返回键重启需二次点击才能退出问题求助
Android主界面点击一次返回键直接退出应用解决方案
问题原因
你当前跳转逻辑里登录页、闪屏页虽然都调用了finish(),但大概率存在以下异常情况导致任务栈内残留多余Activity实例/重复创建了主界面实例:
- 闪屏页类名拼写错误(代码中定义为
Loadin_Screen,引用时写为Loading_Screen)可能导致跳转逻辑异常 - 任务栈没有正确清空,残留了无效的页面实例
修复方案
方案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
相关产品推荐
相关产品推荐

