我进行了很多搜索,但没有找到答案。我开发了一个android应用程序,在第一个午餐用户处,将显示一个由viewpager制成的欢迎屏幕。问题是我不知道将欢迎活动代码放入应用程序的最佳位置。

最简单的方法可能是在主活动中,甚至在super.onCreate()之前的第一行中,在onCreate方法中,我尝试获取共享的首选项值,然后评估它是否是第一顿午餐。如果是这样,那么我将如下所示启动欢迎活动

public class MainActivity extends Activity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {

        SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this);
        boolean welcome = sharedPreferences.getBoolean(getString(R.string.key_welcome), true);
        if (welcome) {
            // go and start welcoming activity
            Intent intent = new Intent(this, WelcomeSlideActivity.class);
            startActivity(intent);
        }


        super.onCreate();
    }
}


但是我找到了另一种方法来处理它。它是应用程序类。由于Application类是第一个类,因此它甚至在我的应用程序中的任何其他代码之前运行。所以我想,我会很高兴在这里做,如下所示

public class App extends Application {

    @Override
    public void onCreate() {
        super.onCreate();

        SharedPreferences sharedPreferences = PreferenceManager.getDefaultSharedPreferences(this);
        boolean welcome = sharedPreferences.getBoolean(getString(R.string.key_welcome), true);
        if (welcome) {
            // go and start welcoming activity
            Intent intent = new Intent(this, WelcomeSlideActivity.class);
            intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
            startActivity(intent);
        }
    }
}


所以我陷入了困境,哪一个将是最好的选择。而且我什至不确定我是否以正确的方式来做,因为在android开发者网站或任何地方都没有这样的文档。

最佳答案

看看如何以正确的方式创建启动画面。 https://www.bignerdranch.com/blog/splash-screens-the-right-way/

至于使用Application类-该类主要用于应用程序范围的配置,以维护全局应用程序状态。因此,从此处开始活动没有多大意义,因为它的目的已变为成为应用程序的入口点,而不是为整个应用程序提供状态。

此外,为什么不将WelcomeSlideActivity设为第一个“启动”活动?然后,您可以在其中创建逻辑,以启动没有历史记录的下一个活动,还是显示当前视图。

理想情况下,您应该创建一个初始屏幕活动,该活动确定是显示WelcomeSlideActivity还是MainActivity。这样做的好处是,当他的应用确定要启动的活动时,会向用户显示一个初始屏幕,通知用户该应用已启动

08-05 18:46