java - 欢迎 Activity 代码放置在哪里

标签 java android

我搜索了很多,但没有找到答案。我开发了一个 Android 应用程序,在第一次午餐时,用户将看到一个由 viewpager 制成的欢迎屏幕。问题是我不知道哪个位置最适合将欢迎 Activity 代码放入我的应用程序中。

最简单的方法可能是在主要 Activity 的第一行,甚至在 super.onCreate() 之前,在 onCreate 方法中,我尝试获取共享偏好值,然后评估是否这是第一顿午餐。如果是,那么我开始欢迎 Activity ,如下所示

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();
    }
}

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

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 类 - 这主要用于应用程序范围的配置,以维护全局应用程序状态。因此,从这里开始一个 Activity 没有多大意义,因为它的目的已经变成了应用程序的入口点,而不是为整个应用程序提供状态。

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

理想情况下,您应该创建一个闪屏 Activity ,它决定是显示 WelcomeSlideActivity 还是 MainActivity。这样做的优点是,当应用程序确定要启动哪个 Activity 时,会向用户显示一个启动屏幕,通知用户应用程序已启动

关于java - 欢迎 Activity 代码放置在哪里,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41921073/

相关文章:

android - Ellipsize 对于具有任意最大高度的多行 TextView 无法正常工作

java - 如何以与实现无关的方式在 JPA 中创建 Clob

java - 即使抛出 NullPointerException 后,Spring Batch 指数重试也不会启动

java - 对一些明文进行两次编码并获得相同的哈希值

java - 在 dynamodb 中存储 JSON 的可能方法

Android:从 fragment 中删除 SQLIte 数据库中的记录行

android - 检查 (ParseUser.getCurrentUser() != null) 时出现 NullPointerException

android - 在 ActionBarSherlock 中设置自定义主页布局

java - 一次测试多个 .equals()

android - 运行 google script api quickstart for android 时出错