应用程序到达前台时会调用oncreate

时间:2018-02-18 11:43:42

标签: android android-activity back-stack

我有SplashScreen Activity和MainActivity。一旦我正在调用SplashScreen超时

Intent intent = new Intent(SplashActivity.this, MainActivity.class);
    startActivity(intent);
    finish();

它带我去了主动的创造。现在我按下设备主页按钮并将应用程序保存在背景中很长一段时间,当我通过单击Launcher图标将应用程序带到前台时,它会将我带到onCreate of MainActivity。在这里,我怀疑设备是否从应用程序backstack中杀死了我的应用程序,然后它应该从SplashScreen Activity而不是MainActivity开始。我没有在Manifest.xml中设置任何启动模式标记。你能帮我吗

2 个答案:

答案 0 :(得分:3)

  

现在我按设备主页按钮并将应用程序保存在背景中很长一段时间,当我通过点击启动器图标将应用程序带到前台时,它将带我进入MainCctivity的onCreate。

是的,这是预期的行为。如果应用程序已在后台运行足够长时间以至于操作系统已经杀死了应用程序的进程,那么您的MainActivity将需要完成其完整的创建过程,包括onCreate()(尽管您应该看到savedInstanceState捆绑包在重新创建期间非空。)

  

这里我怀疑设备是否从应用程序backstack中删除我的应用程序然后它应该从SplashScreen Activity而不是MainActivity开始。

我认为你误解了操作系统杀死你的应用程序的过程意味着什么。这并不意味着您的应用已经“退出”,并不意味着您的应用将从头开始,就像它第一次启动时一样。实际上,显然应该看起来好像是第一次出现。主要的想法是,杀死应用程序进程的操作系统不应该是用户所意识到的事情;他们应该从他们离开的地方开始。

答案 1 :(得分:0)

manifest.xml中的SplashActivity中设置意图过滤器,如下所示

<activity
    android:name=".activity.SplashActivity"
    android:theme="@style/AppTheme"
    android:windowSoftInputMode="adjustPan">
    <intent-filter>
        <action android:name="android.intent.action.MAIN" />

        <category android:name="android.intent.category.LAUNCHER" />
    </intent-filter>
</activity>

现在,如果您的应用首先在应用启动时搜索启动画面。还要记住,当您在活动中调用 - finish() ;时,活动会从Stack中移除。所以当您回到应用再次,您将能够看到您的HomeActivity