这个问题烦了了两天还是没有解决,最后在同事的帮助下解决了
问题:后台进入前台弹出密码界面,需要在Activity的生命周期resume()方法中实现,因为弹出了密码页面,原来要显示的又进入了后台,还会在重新调用onRestme()方法,所以:
public class BaseActivity extends AppCompatActivity { private static boolean isLeave = false; //记录是否应用进入后台 /** * 每次进入后台再显示时要进入登录页面,而显示登录页面后之前要恢复的页面则又进入后台,故通过first * 来判断是否是从后台恢复显示 */ private boolean first=true; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); String theme = DBUtil.getSetting(this, DBUtil.APP_THEME); if (theme.length() > 0) { setTheme(Integer.parseInt(theme)); } else { setTheme(R.style.AppTheme); } ActionBar actionBar = getSupportActionBar(); if (actionBar != null) { actionBar.hide(); } //因为大部分页面都是集成BaseActivity,故每个页面创建时都重新初始化一些变量 isLeave=false; first=true; } @Override protected void onUserLeaveHint() { super.onUserLeaveHint(); if(!isLeave && first){ isLeave=true; //进入后台 } } @Override protected void onResume() { super.onResume(); first=true; //进入前台 if(isLeave){ first=false; Intent intent = new Intent(this, LoginActivity.class); intent.putExtra("type",0); startActivity(intent); isLeave=false; } } }