【发布时间】:2014-05-18 19:02:08
【问题描述】:
我的 Android 应用出现了一个奇怪的问题。
我的应用如何工作:当我启动我的应用时,它会启动 MainActivity。如果用户未登录,则启动 LoginActivity,然后在 MainActivity 中调用完成。
现在,当 LoginActivity 启动并且我按下后退按钮时,应用程序将关闭。当我再次打开应用程序时,它必须再次启动 LoginActivity,但有时这不起作用(例如 8 次中的 1 次)。当它不起作用时,应用程序只会向我显示一个空活动。
当应用程序无法正确启动(第二个打印屏幕)时,按钮/文本输入确实可以工作,但看起来它们只是被隐藏了或其他什么。因此,当我按下“Sign Up”文本的位置时,它确实将我带到了 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);
}
【问题讨论】:
-
可以
usersDataSource.getCurrentUser() != null这样吗? -
不,我只是用 if(true) 对其进行了测试,所以它总是启动 LoginActivity,但我仍然遇到同样的问题。
-
您是否正在使用您的
Service与服务器通话? -
看起来很奇怪的是空白活动有标题
-
@Emmanuel 该服务确实包含与服务器通信的代码,但在您按下登录按钮之前不会使用此代码。