我是Android Java新手,对此有一些疑问。这是应用程序的意图概念
首先, 启动活动 有两个按钮,可让用户将屏幕推到 注册活动 ,然后 登录活动 。除此之外,用户还可以按返回按钮返回 启动活动 。因此它不包括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();
是因为我们无法破坏登录屏幕上的启动屏幕?但是添加这些标志应该会破坏所有历史记录吗?