在正确处理活动之间的流程方面,我正在寻求建议。假设我有两个活动 - 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-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。或者如果应用程序已经启动,我需要将焦点从 LoginActivity 切换到 MainActivity 并立即传递意图数据。
我相信这个问题之前一定已经解决了,我宁愿遵循最佳实践,也不愿尝试发明自己的解决方案——这就是我寻求建议的原因。