我的Android应用程序出现了一个奇怪的问题。
我的应用如何运作:当我启动应用时,它会启动MainActivity。如果用户未登录,则启动LoginActivity,然后在MainActivity中调用完成。
现在,当启动LoginActivity时,我按下后退按钮即可关闭应用程序。当我再次打开应用程序时,它必须再次启动LoginActivity,但有时这不起作用(如8次中的1次)。如果它不起作用,应用程序只会显示一个空的活动。
当应用程序无法正确启动时(第二个打印屏幕),按钮/文本输入可以正常工作,但看起来它们只是隐藏或其他东西。因此,当我按下“注册”文本的位置时,它会将我带到RegisterActivity。
有人知道导致这种奇怪行为的原因吗?
这是应用程序正确启动时:
但有时会发生这种情况:
MainActivity onCreate:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
initializeDataSources();
if(usersDataSource.getCurrentUser() == null)
{
Intent LoginActivity = new Intent(getApplicationContext(), LoginActivity.class);
LoginActivity.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
startActivity(LoginActivity);
finish();
return;
}
if(localServiceBinder == null)
localServiceBinder = new LocalServiceBinder();
bindLocalService();
setContentView(R.layout.activity_main);
}
LoginActivity onCreate:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if(localServiceBinder == null)
localServiceBinder = new LocalServiceBinder();
bindLocalService();
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.activity_login);
mUsernameView = (EditText) findViewById(R.id.username);
mPasswordView = (EditText) findViewById(R.id.password);
mSignInButton = (Button) findViewById(R.id.sign_in_button);
mSignUpButton = (TextView) findViewById(R.id.sign_up_button);
}
答案 0 :(得分:0)
将您的数据工作和登录活动调用移至onStart / onResume。
当onDestroy / onCreate在活动隐藏并再次显示时不调用时,您将获得“空”活动。
这时:if(usersDataSource.getCurrentUser() == null)
是的,这是:
if(localServiceBinder == null)
localServiceBinder = new LocalServiceBinder();
bindLocalService();
setContentView(R.layout.activity_main);
成为案件的死代码:onPause - > onStop - > onStart - >的onResume 在你的活动的生命周期中。