为什么finish()会使所有活动都无法返回到先前的活动?

时间:2018-06-28 08:14:07

标签: java android android-intent

我是Android Java新手,对此有一些疑问。这是应用程序的意图概念

enter image description here

首先, 启动活动 有两个按钮,可让用户将屏幕推到 注册活动 ,然后 登录活动 。除此之外,用户还可以按返回按钮返回 启动活动 。因此它不包括finish()

//Login Activity
Intent i = new Intent(LaunchActivity.this, LoginActivity.class);
LaunchActivity.this.startActivity(i);

在AndroidManifest中,主要活动(黄色)是第一个活动。

<activity
  android:name=".MainActivity">
  <intent-filter>
    <action android:name="android.intent.action.MAIN" />
    <category android:name="android.intent.category.LAUNCHER" />
  </intent-filter>
</activity>

主要活动 上,我将检查用户是否登录到该应用程序。如果尚未登录,我将使用此代码将屏幕推送至 启动活动 。 (我也在退出按钮上使用此代码)

Intent i = new Intent(MainActivity.this, LaunchActivity.class);
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK);
i.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
startActivity(i);
finish();

因此,我使用finish()来防止用户返回 主要活动

但是问题是finish()也使 登录和注册活动 不能回到 启动活动< / em>

那么finish()是否使所有活动都无法返回到先前的活动?为什么以及如何解决?

由于有评论,我知道问题是标记。因此,我在检查登录状态并注销时删除了这些标志。但是成功登录后(从登录屏幕登录到主屏幕),我可以按返回按钮以返回到主屏幕上的启动屏幕。为什么?仅在首次登录时发生。重新启动应用程序后,该应用程序运行正常。这是我在登录按钮上使用的代码。

Intent i = new Intent(context, MainActivity.class);
i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK);
i.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
startActivity(i);
finish();

是因为我们无法破坏登录屏幕上的启动屏幕?但是添加这些标志应该会破坏所有历史记录吗?

0 个答案:

没有答案