在正确处理活动之间的流程时,我正在寻求建议。假设我有两个活动 - LoginActivity和MainActivity:
<activity
android:name=".LoginActivity"
android:configChanges="keyboardHidden|orientation"
android:label="@string/app_name"
android:launchMode="singleTop"
android:screenOrientation="portrait">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".MainActivity"
android:configChanges="keyboardHidden|orientation"
android:label="@string/app_name"
android:launchMode="singleTop"
android:screenOrientation="portrait" />
现在,当应用程序启动时,我启动LoginActivity,如果登录成功,我会显示MainActivity。
现在,当我想处理某些类型的Intent时,问题就出现了。假设我想在我的应用中添加自定义架构:
<intent-filter>
<data android:scheme="customschema" />
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.BROWSABLE" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
我会添加哪些活动?理想情况下,我希望将它添加到MainActivity,然后在onNewIntent方法中处理它,但我的应用程序可能没有启动,在这种情况下,我首先需要运行LoginActivity。另一方面,如果我将其添加到LoginActivity,我需要一种方法在用户成功登录后将该意图传递给MainActivity。或者如果app已经启动,我需要将焦点从LoginActivity切换到MainActivity并立即传递intent数据。 / p>
我认为这个问题以前一定已经解决了,我宁愿遵循最佳实践,而不是试图发明自己的解决方案 - 这就是为什么我在寻找建议。
答案 0 :(得分:1)
答案 1 :(得分:1)
必须永远不会超过 ONE LoginActivity 实例。
一旦您收到“主要活动”的意图,请确保在onCreate方法中检查登录,如果用户未登录,则将意图返回LoginActivity。
如果用户已达到LoginActivity但已登录,则将意图抛回主活动。
这可能会导致UI出现故障,但这只会表明设计有问题,因为任何类型的事件都不会到达未登录的应用程序!