只有当app“开始”时才会做某事

时间:2010-12-16 05:55:37

标签: android

我有一个应用程序,其中包含一个活动。每当我的应用程序从它的图标启动时,我都需要显示一个品牌/启动画面。我的客户非常强调这一点,启动应用程序时必须始终有一个闪屏。 (请注意,它也有法律通知,显然律师参与了这一决定)

当然,当方向发生变化时,或者在拨打电话后返回应用程序时,启动画面应该(应用程序可以启动电话拨号器,BTW)

我知道应用程序在启动时并不总是真正“启动”,因为它最近可能已经运行并且活动保持活跃状态​​。然而,我的客户并不关心这种技术性,如果你从一个图标启动它,你正在“启动”应用程序,它必须显示启动画面。

有什么好的策略吗?我不知道如何区分开展活动的各种方式。

5 个答案:

答案 0 :(得分:2)

创建一个将显示启动画面的活动,为其提供单击启动器时要启动的intent过滤器:

<activity android:name="ShowMySplashScreen" android:screenOrientation="portrait" android:configChanges="keyboardHidden|orientation" >
    <intent-filter>
        <action android:name="android.intent.action.MAIN"></action>
        <category android:name="android.intent.category.LAUNCHER"></category>
    </intent-filter>
</activity>

在屏幕显示多少秒后,请在活动上调用finish()并启动实际的应用流程。

答案 1 :(得分:0)

据我了解您的问题,我认为您需要使用onStart () and onResume ()(在按HOME后返回活动时显示启动画面)

关于启动视图,我建议使用ImageView(如果您想将图像显示为启动)并将其可见性设置为GONE&amp;然后当您的Actvity恢复或开始时,使图像视图显示FILL_PARENT

&安培; (我想)你完成了!

答案 2 :(得分:0)

为了帮助您了解活动的启动方式,我在开发者指南中找到了以下图片:

Activity Life Cycle

如您所见,您可能希望覆盖onReseume()函数以显示作为启动画面的意图/活动

例如:

public void onResume()
{
 startActivity(new Intent(this, SplashScreen.class));
}

其中SplashScreen是一个扩展活动的类
然后正如扎拉所说:

  

在屏幕显示多少秒后,请拨打finish()   活动并启动实际的应用程序流程。

或做某事。让他们按下屏幕:P

答案 3 :(得分:0)

你应该告诉你的客户这是一个非常糟糕的主意。但是,如果你真的需要破解这个,你上面的建议都不会有效。我唯一能想到的是每次任何活动暂停时都会在首选项中保存时间戳(onPause),然后每当任何活动恢复时(onResume)都会检查该值,如果它太久以前重定向到启动画面活动。 然而,这将是可怕的。

建议客户创建一个标准的启动画面,其中有一个对话框,上面写着“是啊..我已经看过这个......”并点击继续。当他们按下您的点击时,您确认无需再次显示启动...

答案 4 :(得分:0)

查看this

它是在任何活动之前创建的。您可以在那里设置某种just_started标志,在您的活动的onCreate()方法中进行检查并采取相应的行动。