Android 从不同的发布源将应用程序带到前台后,应用程序将重新启动

Android 从不同的发布源将应用程序带到前台后,应用程序将重新启动,android,android-intent,Android,Android Intent,嗨,我被这个问题困住了。 我的应用程序有3项活动: SplashScreenActivity、LoginsScreenActivity、ViewPagePractivity,其中包含3个片段。 当我将apk放入移动SD卡并使用packagemanager安装和打开时。我的应用程序启动得很好。 问题-但是,现在如果我按下Home(主页)按钮,然后再次从应用程序抽屉/主屏幕启动应用程序。该应用程序似乎重新启动,我必须通过整个流程的飞溅和登录屏幕 如果我第一次从应用程序抽屉启动应用程序本身,则不会出现

嗨,我被这个问题困住了。 我的应用程序有3项活动:

SplashScreenActivity、LoginsScreenActivity、ViewPagePractivity,其中包含3个片段。 当我将apk放入移动SD卡并使用packagemanager安装和打开时。我的应用程序启动得很好。 问题-但是,现在如果我按下Home(主页)按钮,然后再次从应用程序抽屉/主屏幕启动应用程序。该应用程序似乎重新启动,我必须通过整个流程的飞溅和登录屏幕

如果我第一次从应用程序抽屉启动应用程序本身,则不会出现此问题。/如果我长按Home按钮并从最近的应用程序列表中选择应用程序,则应用程序也会正确恢复

作为参考,我使用这些标志启动活动

启动->登录

LoginActivity->ViewPageActivity


主屏幕图标启动您声明为主要的任何活动。。。清单中的启动器活动。通常,清单中的启动活动应该是应用程序的主要活动。在那里,您可以在需要时调用启动屏幕和登录活动。

删除这些标志或完整的代码行


intent.addFlagsIntent.FLAG\u活动\u新任务

使用package manager启动时,这似乎是一个问题。


要进行此更改,我最终必须为每次调用onPause保存和恢复实例,在那里我必须存储我当前的infocus活动/片段详细信息。我的问题是,为什么系统不像问题中提到的其他场景那样恢复应用程序。这是处理场景的方法之一,因此接受答案。虽然我找到了我在回答中提到的问题的根本原因。
Intent intent=new Intent(SplashScreen.this, LoginActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
startActivity(intent);
Intent intent = new Intent(context, ViewPagerActivity.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
context.startActivity(intent);
if (!isTaskRoot()) {
            Intent intent = getIntent();
            String action = intent.getAction();
            if (intent.hasCategory(Intent.CATEGORY_LAUNCHER) && action != null && action.equals(Intent.ACTION_MAIN)) {
                finish();
                return;
            }
        }