如何检查用户是否真正启动了Android应用程序,而不仅仅是返回活动?

时间:2016-02-04 10:54:30

标签: android android-activity launching-application

如何区分应用程序的实际启动上的onCreate()调用或已启动应用程序和类似操作的切换活动(例如返回)没有关闭)? 我已经尝试检查savedInstanceState!= null,但它只适用于屏幕旋转,而不是从此应用或其他应用的其他活动返回活动。我还尝试在onRestoreInstanceState()和onSaveInstanceState()中获取/设置一个特殊变量,但它不是描述案例的解决方案。

如何实施此检查?

2 个答案:

答案 0 :(得分:1)

static boolean isFirstRun = true;

public void onCreate(...) {
    if (isFirstRun) {
        // do stuff
        isFirstRun = false;
    }
}

您是否尝试过这样的事情?

答案 1 :(得分:0)

在这种情况下你可以做的是,使你的"默认" Activity基本的启动器样式Activity。其唯一目的是启动您的主Activity。当启动器启动主Activity时,它可以通过Bundle传递该事实。

Intent intent = new Intent(this, MainActivity.class);
intent.putExtra("first_start", true);
startActivity(intent);

启动器Activity在XML中定义为noHistory。这样,它只会在第一次启动应用程序时打开。

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