如何在初始化数据库时显示启动画面?
我创建了一个完美的启动画面。现在我想要在显示启动画面的同时加载数据库,并且在数据库加载完后显示应用程序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);
}
}
}
有没有什么好的例子或建议?这个你能帮我吗。
您可以通过异步或线程和处理器
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);
}
}
尝试执行此操作这个......可能是它会帮助ü
@Kartik我已经编辑了我的整个飞溅类,因为你有建议,是吗? –
是的,它会工作,只需从你的oncreate函数new MyTask()调用这个函数。execute(this); – Andy
负载在一个线程中的数据基础和做一次进入下一个画面使用处理器,使用处理器类为Android .search处理程序和线程,你会得到很多的解决方案。
调用的活动,让我们把它叫做闪屏。从此活动中调用AsyncTask
,以访问由您创建的另一个课程,从而延伸SQLiteOpenHelper
。这个类初始化数据库。
当此的AsyncTask工作完毕,它返回控制UI线程,现在关闭了闪屏。
它的演示在这里。退房:http://stackoverflow.com/questions/2222890/how-to-make-a-splash-screen-screen-visible-when-app-starts –
在你的闪屏的的onCreate写代码如下
myDataBase=this.openOrCreateDatabase(DB_NAME, MODE_PRIVATE, null);
DatabaseHelper dbHelper = new DatabaseHelper(getApplicationContext());
dbHelper.openDataBase();
的构造函数之前声明你的数据库的详细信息
这将做UI线程的初始化,这可能使如果需要超过几秒钟,您的应用程序无法响应。考虑使用AsyncTask代替。 –
我发现教程UI THRE广告和背景[处理](http://www.vogella.de/articles/AndroidPerformance/article.html#overview_intro)。 并且是指该[答案](http://stackoverflow.com/questions/1979524/android-splashscreen/1982002#1982002)。 – Uttam