我创建了一个完美的启动画面。现在我想在显示启动画面的同时加载数据库,并且在加载数据库之后完全显示应用程序UI。
我有以下代码来做这个是对的吗?
public class Splash extends Activity{
@Override
protected void onCreate(Bundle bundle) {
super.onCreate(bundle);
new LoadDatabase().execute();
}
@Override
protected void onPause() {
super.onPause();
finish();
}
// Load DB
protected class LoadDatabase extends AsyncTask<Context, Integer, String>
{
@Override
protected String doInBackground( Context... params ) {
try {
new DatabaseHelper(getApplicationContext()).initializeDatabase();
} catch (IOException e) {
e.printStackTrace();
}
return "";
}
@Override
protected void onPreExecute() {
super.onPreExecute();
setContentView(R.layout.splash);
}
@Override
protected void onPostExecute(String result) {
super.onPostExecute(result);
Intent openMain = new Intent("com.nepways.MAIN");
startActivity(openMain);
}
}
}
有什么好的例子或建议吗?请帮帮我。
答案 0 :(得分:3)
您可以通过异步或线程和处理程序
执行此操作protected class MyTask extends AsyncTask<Context, Integer, String>
{
@Override
protected String doInBackground( Context... params )
{
// write ur database functionality
}
// -- gets called just before thread begins
@Override
protected void onPreExecute()
{
// u may show ur progressbar or spalsh screen
super.onPreExecute();
}
// -- called as soon as doInBackground method completes
@Override
protected void onPostExecute()
{
super.onPostExecute(result);
// Intent openMain = new Intent("com.nepways.MAIN");
startActivity(openMain);
}
}
试试这个......可能会帮助你
答案 1 :(得分:2)
调用一个Activity,我们称之为SplashScreen。从此活动调用AsyncTask
,该活动访问您创建的另一个类,扩展SQLiteOpenHelper
。该类初始化数据库
当此AsyncTask完成工作时,它将控件返回到UI线程,现在关闭SplashScreen。
答案 2 :(得分:0)
将数据库加载到一个线程中,一旦完成,使用处理程序转到下一个屏幕,使用处理程序类为android .search处理程序和线程,你会得到很多解决方案。
答案 3 :(得分:-1)
在onCreate of SplashScreen中编写以下代码
myDataBase=this.openOrCreateDatabase(DB_NAME, MODE_PRIVATE, null);
DatabaseHelper dbHelper = new DatabaseHelper(getApplicationContext());
dbHelper.openDataBase();
在构造函数
之前声明数据库详细信息