Android 如何在运行时根据数据选择第一个活动?
我刚开始使用Android,我想我错过了一些东西。 在Android中,您似乎在开发时决定哪个活动将首先显示在应用程序中 我希望以这样一种方式编写我的应用程序:某种集中式控制器开始执行,它决定应该首先执行哪个活动 (例如,基于从某处获得的一些数据) 这有可能做到吗?如果有,如何做到?Android 如何在运行时根据数据选择第一个活动?,android,android-activity,uiviewcontroller,Android,Android Activity,Uiviewcontroller,我刚开始使用Android,我想我错过了一些东西。 在Android中,您似乎在开发时决定哪个活动将首先显示在应用程序中 我希望以这样一种方式编写我的应用程序:某种集中式控制器开始执行,它决定应该首先执行哪个活动 (例如,基于从某处获得的一些数据) 这有可能做到吗?如果有,如何做到? 谢谢。大多数人都是通过启动一个活动来完成的,该活动只需要选择它需要的配置,然后启动“真正的”活动。一个问题是,第一次启动的活动将在任务堆栈上,但是如果您为初始活动设置android:noHistory=“true”
谢谢。大多数人都是通过启动一个活动来完成的,该活动只需要选择它需要的配置,然后启动“真正的”活动。一个问题是,第一次启动的活动将在任务堆栈上,但是如果您为初始活动设置android:noHistory=“true”,那么用户应该看不到该过程。我不知道这有什么困难。检查数据后,在onCreate方法的主活动中启动另一个活动,但不设置主活动的查看内容。以下方法可用于在第一次应用程序启动时显示教程屏幕 AndroidManifest.xml:
<activity android:name=".activities.LaunchActivity"
android:noHistory="true"
android:theme="@android:style/Theme.NoDisplay">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
<activity android:name=".onboarding.OnboardingActivity"/>
<activity android:name=".activities.MainActivity"/>
public class LaunchActivity extends Activity {
public static final String FIRST_APP_LAUNCH = "com.your.package.name";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (isFirstAppLaunch()) {
setFirstAppLaunch(false);
startActivity(new Intent(this, OnboardingActivity.class));
} else {
startActivity(new Intent(this, MainActivity.class));
}
finish();
}
private boolean isFirstAppLaunch() {
SharedPreferences preferences = this.getPreferences(Context.MODE_PRIVATE);
return preferences.getBoolean(FIRST_APP_LAUNCH, true);
}
private void setFirstAppLaunch(boolean value) {
SharedPreferences preferences = this.getPreferences(Context.MODE_PRIVATE);
SharedPreferences.Editor editor = preferences.edit();
editor.putBoolean(FIRST_APP_LAUNCH, value);
editor.apply();
}
}