【问题标题】:How to make splash screen not to load if app is already in memory如果应用程序已经在内存中,如何使启动画面不加载
【发布时间】:2012-10-28 19:43:35
【问题描述】:

我在闪屏上遇到了一些问题。当我启动应用程序时,启动屏幕活动会启动几秒钟。主要活动启动后。

如果我按下主 Activity 上的主页按钮,然后从应用程序列表中重新启动应用程序,尽管应用程序已经在后台堆栈中,但启动程序会再次启动。但我希望主要活动能够从内存中恢复。

如果我在那个 android 之后按下返回按钮,我会返回到主活动的前一个副本。

我必须怎么做才能使启动画面只出现一次?以及如何让我的应用从点击主页按钮之前看到的最后一个屏幕重新启动?

    <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"/>

【问题讨论】:

    标签: android android-activity splash-screen


    【解决方案1】:

    这是一个设计问题。您的启动器活动不应该是您的启动屏幕活动。相反,在您的主要活动的 onCreate 方法中打开您的启动活动。这样,如果它是全新打开的,则会调用 onCreate 并显示初始屏幕。否则,如果应用程序只是恢复,它调用 onResume,则不会调用打开启动屏幕活动。

    然后您可以将清单更改为:

    <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"/>
    

    【讨论】:

    • 看起来不太好 - 首先打开一个活动,然后打开另一个,然后我看到启动画面(即使没有动画)。用户不应该看到这些背景内容。
    • @bluebyte,你的onCreate 方法是什么样的?
    • 不小心将此信息添加到您的答案中
    猜你喜欢
    • 1970-01-01
    • 2011-10-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-10-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多