如何检查用户是否真正启动了 android 应用程序,而不只是返回到 activity?
How to check if user actually started the android app, not just returned to the activity?
如何区分在实际启动 应用程序或切换已启动应用程序的活动和类似操作(如返回 在应用程序未关闭时添加到应用程序)?
我已经尝试检查 savedInstanceState!=null,但它只适用于屏幕旋转,而不是从这个应用程序或另一个应用程序的另一个 activity 返回到 activity。我还尝试 get/set onRestoreInstanceState() 和 onSaveInstanceState() 中的一个特殊变量,但这不是上述情况的解决方案。
如何实现这个检查?
在这种情况下,您可以做的是让您的 "default" 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>
static boolean isFirstRun = true;
public void onCreate(...) {
if (isFirstRun) {
// do stuff
isFirstRun = false;
}
}
你试过这样做吗?
如何区分在实际启动 应用程序或切换已启动应用程序的活动和类似操作(如返回 在应用程序未关闭时添加到应用程序)? 我已经尝试检查 savedInstanceState!=null,但它只适用于屏幕旋转,而不是从这个应用程序或另一个应用程序的另一个 activity 返回到 activity。我还尝试 get/set onRestoreInstanceState() 和 onSaveInstanceState() 中的一个特殊变量,但这不是上述情况的解决方案。
如何实现这个检查?
在这种情况下,您可以做的是让您的 "default" 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>
static boolean isFirstRun = true;
public void onCreate(...) {
if (isFirstRun) {
// do stuff
isFirstRun = false;
}
}
你试过这样做吗?