且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

如何让启动画面不加载,如果应用程序已经加载到内存

更新时间:2023-01-25 21:57:58

这是一个设计问题。您的发射活动不应该是闪屏的活动。相反,在你的主要活动的onCreate方法打开飞溅的活动。这样,如果它被打开新鲜的onCreate被调用,闪屏显示。否则,如果应用程序仅仅是恢复了,它调用onResume,就不会有调用打开启动屏幕的活动。

然后你就可以改变你的清单,以这样的:

 <活动
        机器人:名称=。ui.MainActivity
        机器人:noHistory =真
        机器人:screenOrientation =画像
        机器人:标签=@字符串/ APP_NAME>

    <意向滤光器>
        <作用机器人:名称=android.intent.action.MAIN/>
        <类机器人:名称=android.intent.category.LAUNCHER/>
    &所述; /意图滤光器>
< /活性GT;

<活动机器人:名称=。ui.SplashActivity/>
 

I have some troubles with spash screen. When I launch app, splash screen activity launches for some seconds. After it main activity launches.

And if i press home button on the main activity and then relaunch app from apps list, splash activity launches again although the app is already in backstack. But I expect main activity to restore from memory.

And if i press back button after that android returns me to the previous copy of main activity.

What I have to do to make splash screen appear just once? And how to get my app relaunched from the last screen I saw before the home button was clicked?

    <activity
            android:name=".ui.SplashActivity"
            android:noHistory="true"
            android:screenOrientation="portrait"
            android:label="@string/app_name">

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

    <activity android:name=".ui.MainActivity"/>

This is a design problem. Your launcher activity should not be your splash screen activity. Instead, open your splash activity in your main activity's onCreate method. That way, if it is opened fresh, onCreate is called and the splash screen is shown. Otherwise, if the app is merely resumed, which calls onResume, there would be no call to open the splash screen activity.

Then you can change your manifest to this:

<activity
        android:name=".ui.MainActivity"
        android:noHistory="true"
        android:screenOrientation="portrait"
        android:label="@string/app_name">

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

<activity android:name=".ui.SplashActivity"/>