android:在每个应用程序启动时将登录活动放在堆栈顶部

时间:2014-11-25 10:23:53

标签: android android-activity

我有一个LoginActivity,它是在第一个应用程序启动时启动的。在我为LoginActivity定义的清单中

<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />

因此,如果我在任何其他活动处于活动状态时关闭应用程序(例如MyActivity)并再次打开它,则会显示最后一个活动活动MyActivity。

是否有可能以某种方式在每个应用程序启动时将LoginActivity叠加在堆栈顶部?如果LoginActivity完成,将使用旧的活动堆栈?

谢谢!

2 个答案:

答案 0 :(得分:1)

您可以将MyActivity设置为启动器活动。在OnCreate方法中,您可以检查用户是否已记录,如果没有,则可以启动登录活动。 在您的清单中,将您的登录名称定义为de MyActivity的子项

  

android:parentActivityName =“com.example.myfirstapp.MainActivity”

因此,当用户完成登录活动时,他将被重定向到之前的活动。

许多应用使用SharedPreferences来保存用户的状态,并确定他是否已登录。

答案 1 :(得分:1)

要做到这一点,当从一个活动导航到另一个活动时,将意图作为NEW_TASK

设置为新活动:

    Intent intent;
    intent = new Intent(v.getContext(), New_Activity.class); //replace v.getContext with getApplicationContext() if redirecting is not a result of pressing some Button
    intent.putExtra("EXIT", false);
    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    startActivity(intent);

然后,在每个活动上使用以下内容覆盖onRestart()方法:

@Override
public void onRestart() {
    Intent intent;
    intent = new Intent(getApplicationContext(), Login_Activity.class); // be aware here, we navigate to Login activity without closing the old one
    intent.putExtra("EXIT", false);
    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    startActivity(intent);
}