我刚开始使用Android,我想我错过了一些东西。 在Android中,您似乎在开发时决定哪个活动将首先在您的应用程序中显示。
我想以这样的方式编写我的应用程序:某种集中式控制器开始执行,它决定哪个活动应该是第一个 (例如,基于从某处获得的一些数据)
是可以做到的,如果是的话,怎么做? 感谢。
答案 0 :(得分:6)
大多数人通过启动一个只需要获取所需配置的活动来启动“真实”活动。一个小问题是,首次启动的活动将在任务堆栈上,但如果您为初始活动设置android:noHistory =“true”,则该过程应该对用户不可见。
答案 1 :(得分:3)
以下方法可用于在首次启动应用时显示教程屏幕。
<强>的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"/>
<强> LaunchActivity.java 强>:
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();
}
}
答案 2 :(得分:2)
我想知道这有多么艰难。在检查数据开始另一个活动而不设置主要活动的视图内容之后,在onCreate方法的主Activity中。