我有一个LoginActivity,它是在第一个应用程序启动时启动的。在我为LoginActivity定义的清单中
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
因此,如果我在任何其他活动处于活动状态时关闭应用程序(例如MyActivity)并再次打开它,则会显示最后一个活动活动MyActivity。
是否有可能以某种方式在每个应用程序启动时将LoginActivity叠加在堆栈顶部?如果LoginActivity完成,将使用旧的活动堆栈?
谢谢!
答案 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);
}