Java 在Android中按OnBack后恢复时清空活动

Java 在Android中按OnBack后恢复时清空活动,java,android,Java,Android,我的Android应用程序有一个奇怪的问题 我的应用程序的工作方式:当我启动应用程序时,它会启动main活动。如果用户未登录,则启动LoginActivity,完成后在MainActivity中调用 现在,当LoginActivity启动,我按下后退按钮时,应用程序关闭。当我再次打开应用程序时,它必须再次启动LoginActivity,但有时这不起作用(如8次中的1次)。当它不工作时,应用程序只显示一个空的活动 当应用程序无法正确启动(第二个打印屏幕)时,按钮/文本输入确实起作用,但看起来它们只

我的Android应用程序有一个奇怪的问题

我的应用程序的工作方式:当我启动应用程序时,它会启动main活动。如果用户未登录,则启动LoginActivity,完成后在MainActivity中调用

现在,当LoginActivity启动,我按下后退按钮时,应用程序关闭。当我再次打开应用程序时,它必须再次启动LoginActivity,但有时这不起作用(如8次中的1次)。当它不工作时,应用程序只显示一个空的活动

当应用程序无法正确启动(第二个打印屏幕)时,按钮/文本输入确实起作用,但看起来它们只是被隐藏了或其他什么东西。因此,当我按下“注册”文本的位置时,它确实会将我带到RegisterActivity

有人知道这种奇怪行为的原因吗

此时应用程序已正确启动:

但有时会发生这种情况:

main创建时的活动:

@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);
}
创建时的登录活动:

@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);
}

将数据工作和登录活动调用移动到onStart/onResume。 当onDestroy/onCreate在活动隐藏并再次显示时调用dont时,您将获得“空”活动。 当出现以下情况时:
if(usersDataSource.getCurrentUser()==null)
这是真的:

if(localServiceBinder == null)
            localServiceBinder = new LocalServiceBinder();

bindLocalService();

setContentView(R.layout.activity_main);
成为案例的死代码:onPause->onStop->onStart->onResume
在活动的生命周期中。

可以是
usersDataSource.getCurrentUser()!=NUL/<代码>这个案例?不,我只是用IF(true)测试它,所以它总是启动Login活动,但是我仍然有同样的问题。你在和你的<代码>服务< /代码>交谈吗?看起来很奇怪的是空白活动有title@Emmanuel该服务确实包含与服务器对话的代码,但是这个代码直到你按下登录按钮才被使用。这不起作用,我仍然遇到同样的问题。此外,如果(usersDataSource.getCurrentUser()==null)为true,则MainActivity关闭,LoginActivity启动。因此,代码的其余部分应该是死代码。它会关闭但不总是破坏如果您在启动时没有检查用户数据就将登录活动调用放入,那么它会工作吗?我想一定是这样。然后可能是用户数据(也必须在onStart中初始化)取决于旧的MainActivity实例。没有那么多的案例。当MainActivity实例创建一次,显示为LoginActivity,并且第二次调用应用程序时,您确实遇到了这样的情况—没有调用onCreate,因为旧实例没有被销毁。不幸的是,这也不起作用。奇怪的是,它确实启动了物流活动。我可以点击空屏幕上的按钮,尽管我看不到它们。