I have 4 activities:
- MainActivity (launcher) - checks if user is logged in then start ContainerActivity else IntroActivity
- IntroActivity - shows various login methods including facebook login
- LoginActivity - contains phone or email login method. After successful login start ContainerActivity
- ContainerActivity - main application
I have 2 problems.
First, I want to remove IntroActivity
from stack when user successfully login from LoginActivity
. Can't use android:noHistory="true"
because when user decides to use facebook to login not phone or email, IntroActivity
should be in stack.
Second, when user logout from any activity, I want to back to MainActivity
and clearing all back stack. I will add activities in future. What is the right way to do this?
<activity
android:name=".MainActivity"
android:theme="@style/AppTheme.Launcher"
android:noHistory="true">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity
android:name=".intro.IntroActivity">
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data android:scheme="@string/fb_login_protocol_scheme" />
</intent-filter>
</activity>
<activity
android:name=".authentication.LoginActivity"
android:parentActivityName=".intro.IntroActivity"
android:noHistory="true" />