我搜索了很多,但我找不到答案。我开发了一个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类。由于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开发者网站或任何地方都没有这样的文档。
答案 0 :(得分:2)
了解如何以正确的方式创建启动画面。 https://www.bignerdranch.com/blog/splash-screens-the-right-way/
至于使用Application
类 - 这主要用于维护全局应用程序状态的应用程序范围配置。因此,从这里开始活动并没有多大意义,因为它的目的已经变成了应用程序的入口点而不是为整个应用程序提供状态。
此外,为什么不将WelcomeSlideActivity
作为第一个'启动器'活动?然后在那里,您可以创建是否启动没有历史记录的下一个活动或是否显示当前视图的逻辑。
理想情况下,您应创建启动画面活动,以确定是显示WelcomeSlideActivity
还是MainActivity
。这样做的好处是,当他的应用程序确定要启动哪个活动时,会向用户显示一个启动画面,通知用户应用程序已启动