我在一年多的时间里没有触及Android上的开发,我之前对此并不是很满意。
但是,我正在开发一个应用程序,我有三个活动--A,B和C. A基本上用作启动画面,并调用B初始化带有填充数据的数据库,然后A调用C ,这是主屏幕。所以活动流程如下(足够简单):
A - > B,然后C
我的问题是我的数据库没有被初始化,直到我退出活动C,这基本上只是结束整个应用程序。我注意到当时调用onCreate for B,我无法弄清楚为什么在那时调用它而不是A启动活动B.
这是我到目前为止所拥有的。此外,我在大多数情况下都在使用本教程作为我的数据库。不确定它是否有所作为,但供参考:http://www.androidhive.info/2011/11/android-sqlite-database-tutorial/
活动A(SplashScreen)
public void onCreate(Bundle saveInstanceState) {
super.onCreate(saveInstanceState);
setContentView(R.layout.splash_layout);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
mHandler = new Handler();
mRunnable = new Runnable() {
public void run() {
// Initialize the database on startup
Intent initDB = new Intent(SplashScreen.this, DBInit.class);
SplashScreen.this.startActivity(initDB);
// Then load up the main activity
Intent mainIntent = new Intent(SplashScreen.this, MainActivity.class);
SplashScreen.this.startActivity(mainIntent);
SplashScreen.this.finish();
overridePendingTransition(R.anim.fade_in, R.anim.fade_out);
}
};
mHandler.postDelayed(mRunnable, 2000);
}
活动B(DBInit)
public void onCreate(Bundle savedInstanceState) {
// Database initialization stuff
DBInit.this.finish();
}
答案 0 :(得分:0)
我发现使用AsyncTask是更简单,更清洁的方法。使用此SO问题/主题作为解决方案:How to show splash screen while initializing database?
我会继续并发布我的解决方案,但现在它是一堆乱七八糟的代码,我还有一个我需要解决的问题。